数当ての正解をランダムで発生させるのにどうするか考察中1

投稿者:Logo mini hightoller 投稿日:2011/04/26 19:34

頭の中だけだとちょっと整理が付かないんで
メモ書きしながら考える。
(1~a)の数字を使い(b)桁作る。それぞれの桁は重複しない。
配列とwhileとrandを使って生成する。

dig = 0
while dig < b
  keynum[dig] = createArray()
  i = 0
    while i < a
    keynum[dig][i] = i + 1
    i = i + 1
    end
  dig = dig + 1
end


これでkeynum[0][0]に1、keynum[b-1][a-1]にaが入るのかな。

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Logo mini hightoller(投稿日:2011/04/28 02:47, 履歴)
レシラムさんどもども。
自分がPCにさせたいことを、一字一句間違えずに翻訳して命令する感じですな。
まだ辞書引きながら(リファレンス、マニュアル見ながら)ですけど、
いずれは自在に操ってみたいですね。
Fortunest6803 mini mariosan(投稿日:2011/04/27 23:35, 履歴)
お、ニコゲー閉鎖後はここにいたんですねw
なんか本格的で凄いw

またお会いできて嬉しいです^^
【レシラム3より】
Logo mini hightoller(投稿日:2011/04/27 20:34, 履歴)
重複させない為には、選択後にその数を抜いて、改めて選択させる必要がある。
スクリプトにまとめる前に処理を書き連ねてみる。

1~5の数を使って3桁の数字を作る。数字は重複しない。
配列に1.2.3.4.5を入力
5つの中から任意の数(仮に3)を発生させ、パスに記憶(3)
配列の3番目以降に1を足す(配列1.2.4.5.6)
配列末尾を削る(1.2.4.5)
4つの中から任意の数(仮に3)を発生させ、パスに記憶(4)
配列の3番目以降に1を足す(配列1.2.5.6)
配列末尾を削る(1.2.5)
3つの中から任意の数(仮に3)を発生させ、パスに記憶(5)
以降は必要ないので処理から抜ける
Logo mini hightoller(投稿日:2011/04/27 17:14, 履歴)
passnum = createArrey()
dig = 0
  while dig < b
  passnum[dig] = rand(a)+1
  dig = dig + 1
  end

これで「重複する」パスナンバーができるのかな。
Logo mini hightoller(投稿日:2011/04/26 22:35, 履歴)
createArray()の支持が早すぎるな。書き直さないと。
keynum = createArray()
i = 0
  while i < a
    keynum[i] = i + 1
    i = i + 1
  end

これでkeynum[0]が1、[a-1]がaになるんだろうな。次は配列操作か。
Logo mini hightoller(投稿日:2011/04/26 21:12, 履歴)
よく考えたら、必要なのは1からaまでの一つずつだな。
二次元じゃなくていいや。