[解決済み] Luaで一様乱数を生成する
2022-03-10 07:57:44
質問
Luaでマルコフ連鎖のプログラミングをしているのですが、その中の一つの要素として、乱数を一様に発生させることが必要です。以下は私の質問を説明するための単純化された例です。
example = function(x)
local r = math.random(1,10)
print(r)
return x[r]
end
exampleArray = {"a","b","c","d","e","f","g","h","i","j"}
print(example(exampleArray))
私の問題は、このプログラムを複数回再実行すると(mash F5 ) 全く同じ乱数が生成され、サンプル関数が全く同じ配列要素を選択します。しかし、1つのプログラムの中で、最後のprint行を何度も繰り返してサンプル関数を何度も呼び出すと、適切な乱数結果が得られます。
適切なマルコフ擬似乱文生成器は、同じプログラムを同じ入力で複数回実行し、毎回異なる擬似乱文が出力できるはずなので、これは私の意図するところではありません。種をリセットするために
math.randomseed(os.time())
となり、乱数分布が一様でなくなってしまいます。私の目標は、上記のプログラムを再実行し、毎回ランダムに選択された数字を受け取ることができるようにすることです。
どのように解決するのですか?
を実行する必要があります。
math.randomseed()
一旦
を使用する前に
math.random()
を、このように。
math.randomseed(os.time())
ご覧になったコメントでは、最初の数字がそのままになっていますね。これは、一部のプラットフォームにおけるランダム・ジェネレーターの実装に起因するものです。
解決策としては、実際に使用する前に、いくつかの乱数をポップすることです。
math.randomseed(os.time())
math.random(); math.random(); math.random()
なお、標準Cライブラリ
random()
より良い解決策は、もしあなたのプラットフォームがより良いランダムジェネレータを提供しているならば、それを使うことです。
参考にしてください。 Lua Math ライブラリ
関連
-
[解決済み] Objective-Cで乱数を発生させる
-
[解決済み] JavaScriptでランダムな文字列/文字を生成する
-
[解決済み] JavaScriptで特定の範囲のランダムな整数を生成する?
-
[解決済み] 乱数(int)を生成する方法を教えてください。
-
[解決済み] JavaScriptで2つの数値の間の乱数を生成する
-
[解決済み] 英数字のランダムな文字列を生成する方法
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] 0から9までのランダムな整数を生成する
-
[解決済み】乱数発生器が1つの乱数しか発生させない。
-
[解決済み】Kotlinで乱数を取得するにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン