• 締切済み

ACCESS2000での乱数発生

よろしく、お願いいたします。 以下の条件のVBAを教えてください。 現存する20000件のテーブルにあるデータに、新しいフィールドを作成し6桁のランダムな数値をすべてのデータに振っていきたいのですが、6桁の中に”0”が無いようにするには、どのようにしたらよいでしょうか。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

<乱数より0を除く方法> 下記のその説明があります。本件では9で割って0,・・・7、8の余りに1を加えれば良いわけです。 余りを使うと乱数から様々な範囲を限定した乱数を作ることが出来る。通常、 rand() で生成される乱数は0以上ある大きな整数値以下の間の任意の整数になっている。しかし、サイコロを振ったと同じような結果を得たければ、 1,2,3,4,5,6 のどれかの整数になるような乱数が必要となる。これは余りを使う事によって、実は簡単に得られる。つまり、rand() を6で割った余りを考えれば良い。しかし、このままでは得られる余りは 0,1,2,3,4,5 であるので、サイコロの場合とは一つだけ数がずれている。そこで、1を足してやればサイコロと同じになる。例えば次の例のようにプログラムすれば良い。以下略 http://www.wakhok.ac.jp/~kanayama/C/98/node75.html

Fujjy
質問者

補足

ありがとうございます。参考にいたします。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 ちょっと聞きたいのですが。 1.そのフィールドはユニーク(重複なし)ですか。 2.乱数でなくてはいけないのですか。(順番がばらばらでなければならないのか) 1.でユニークだとすると、かなり面倒そうです。さらに"0"も使用不可とするともっと面倒そうです。 手順としては、 1.新しいフィールド(1つ目)に乱数をふる 2.その乱数でソートする(つまり順番をメチャクチャにする)。 3.そのメチャクチャな順番で新しいフィールド(2つ目)に6桁の連番をふる(ただし、"0"が入った数字を飛ばす) 4.1.のフィールドを削除する こんな感じになると思います。 では。

Fujjy
質問者

お礼

めんどくさかったです(笑)。ありがとうござました。

関連するQ&A