2017-05-25 13 views
1

テキストファイルから引用符をランダムに選択するハイブリッドバッチ/ jscriptファイル(cscriptを使用)があります。だから、セッションの間にあまりにも多くの検索結果が表示されないようにするには、十分にランダムなRNGが必要です。%RANDOM%とMath.random()とランダム性の違い

私はすべて%RANDOM%がそれほど素晴らしいわけではないことを知っていますが、同じセッションで%RANDOM%を複数回連続して実行すると、より満足できる結果が得られます。

これは本当ですか、それとも以下のJScriptを使用する方が良いですか?

function getRandomNumber(min, max) { 
    return Math.floor(Math.random() * (max - min + 1)) + min; 
} 

WScript.echo(getRandomNumber(0, 32767)); 

が一度getRandomNumber関数を呼び出す対二回%RANDOM%を呼び出す間重要統計差がある場合、私はすべての耳です。

+0

https://en.wikipedia.org/wiki/Pseudorandom_number_generator https://en.wikipedia.org/wiki/List_of_random_number_generators – SLaks

+0

うわー、それはたくさんの(P)RNG素材です。おそらく、私は技術的な詳細(バックグラウンド)のものを探しているわけではありませんが、私は上記の状況についてより簡単で簡単な答えを探していますか? - 例:%RANDOM%を2回連続して実行した後に得られた数値はどれくらいランダムですか? –

+4

私はあなたの質問を理解していません。あなたは、バッチスクリプト(バットファイル)について話していますが、次にJavaScriptについて述べています。ところで、ジェネレータを使用したいという目的は、統計的なランダム性があまりにも高い品質を必要としないようで、おそらく '%RANDOM%'だけで十分です。 – plasmacel

答えて

2

JavaScriptの内蔵乱数ジェネレータは、エンジンの実装によって異なります。根底にあるジェネレータを知らなくても、何も言わないのは難しいです。 %RANDOM%についても同様ですが、おそらくlinear congruential generator(LCG)として実装されています。ウェブ上で検索すると、簡単にforum posts about %RANDOM%が見つかる。これはLCGとして実装されていることを示唆している - 一般的に、悪い統計的性質を持っている。

今、質問はMath.random()がうまくいくかどうかです。また、LCG、新しい実装(Google V8、Microsoft Edgeなど)として実装することもできますが、xorshiftの亜種として実装します。使用しているJavaScriptエンジンが分かっている場合は、ジェネレータのタイプを簡単に調べることができ、その統計的な品質に関する情報も見つけることができます。

ゴールドスタンダードとして、DiehardTestU01のような重い統計テストスイートの2つのジェネレータを比較することもできますが、これはあなたの目的にとっては過度のものです。

最終的なアドバイスとして、私は2つの間でそれらを知らずに選択する必要があった場合、私はJavaScriptジェネレータに行くでしょう。 LCGとして実装されている場合は、実際には%RANDOM%、 より悪くないかもしれません。

でも、おそらく2つの間違った発電機の中から選択する必要はありません。カスタム発電機を使用してください。簡単な、現代的な、高品質のジェネレータについては、this pageをチェックして、JavaScriptに移植することができます。

+1

私のオハイオ州私は、plasmacel(そして、どのように!)話しています。私はあなたがSOで見つけられる最も進化したplasmacelだと信じています。私はあなたの答えの質/レベルに畏敬の念をしています。 - より深刻なメモ:努力してくれてありがとうございました。とても有難い! :-) –

関連する問題