だめだ・・・・
頭働かない・・・・眠い、眠らせて
で、前に出た乱数とかぶらない様に
乱数をだす時のものを、forループとかで作るなら
こうかな???
[as3]
//Math.floorはもっとも近い自然数
//Math.randomとの使い方は、{ Math.random()*( 最大値-最小値+1 ) } + 最小値
var maxVal = 30;
var minVal = 0;
//まず一度、乱数範囲と関係ない数値を入れておく
var numArray:Array = new Array(maxVal+1);
var num:Number;
var checkNum:Boolean = true;
for(var i=0; i < maxVal; i++){
//フラグをリセット」
checkNum = true;
//前のNumberとかぶっていなければ
while ( checkNum )
{
//乱数を作成
num = Math.floor( ( Math.random()*(maxVal-minVal+1) ) + minVal );//end floor
//配列内に以前乱数があるか?? こんな方法でいいのかな?
//無ければwhileを終了
if ( numArray.indexOf(num) == -1 ) checkNum = false;
//trace(numArray.indexOf(num))
};//while end
trace(num)
//今回の乱数を配列に格納
numArray.push(num);
//trace(numA)//end trace
};//for end
[/as3]
・・・・あってるかな??
だめだ、もうねる
追記修正、やっぱり間違っていた
上のやつで、配列を作っている部分で、配列のサイズを指定している
ほかforループの比較方法に問題あり
なおしたモノはこれ
[as3]
//Math.floorはもっとも近い自然数
//Math.randomとの使い方は、{ Math.random()*( 最大値-最小値+1 ) } + 最小値
var maxVal = 30;
var minVal = 0;
//乱数範囲と関係のない数字
var numArray:Array = new Array();
var num:Number;
var checkNum:Boolean = true;
for(var i=0; i <= maxVal; i++){
//フラグをリセット」
checkNum = true;
//前のNumberとかぶっていなければ
while ( checkNum )
{
//乱数を作成
num = Math.floor( ( Math.random()*(maxVal-minVal+1) ) + minVal );//end floor
//配列内に以前乱数があるか?? こんな方法でいいのかな?
//無ければwhileを終了
if ( numArray.indexOf(num) == -1 )
{
checkNum = false;
//今回の乱数を配列に格納
numArray.push(num);
}//if end
//trace(numArray.indexOf(num))
};//while end
trace(num)
//trace(numA)//end trace
};//for end
trace(numArray)
//配列をソート
numArray.sort();
trace(numArray)
[/as3]
でも、この方法って、確率上変な動作起こしそうだな
数学的に、前の乱数とかぶらないように
乱数を出すにはどうすればいいのだろう?
・・・・・んーー
Pingback: 素数を使ったらどうかな? « sakaiden