タイトル
ある桁数以下のランダムなユニークな数字
フォーラムに投稿
単になんとか番号みたいな、増分の順序ではない適当なユニークな数字を作成したいのですが、
以前教えてもらった5桁以下の計算式の意味が分からなくなってしまいました。
これは計算値の自動化で、
1 + Round ( Random * ( 99999 - 1 ) ; 0 )
入力値の制限は、常時、データ入力時にユーザーによる上書きを許可しない、ユニークな値、という設定でフィールドに格納しております。
変な質問で恐縮ですが、この計算式はどういう意図なんでしょうか?
私が考えるに、
randomは0から1までの範囲の乱数を返すので(1以下しかない)、
5桁最大整数の99999に、randomの値が1のときに、6桁になってしまうので、
予め1を引いておいて、最後に1を足す、ということでしょうか。
切り捨て処理をすれば、1を引いて1を足す処理は必要じゃないんじゃないかと思ってみたり。
もっとスマート方法があればアドバイスいただけないでしょうか。
Random は、0以上1未満の数字を返しますので、
Int ( Random * 99999 ) + 1
にしておくと、1以上99999以下の整数が返ります。
ユニークにするには、重複を禁止するような制限をかけておいても良いですが、エラー処理が必要になります。
別テーブルに、1から99999までの数字を設定したレコードを作っておいて、
Int ( Random * Get ( レコード総数 ) ) + 1 番目のレコードの内容を取得し、そのレコードを削除していく、という手順が確実かも。
ただ、重複するレコードは滅多に出ませんが。