質問

私のアドバイスを必要にどのように取り組むアルゴリズムの問題ります。グper se)今の私のニーズにどう応えします。他のコメントを改善することを歓迎する。

私】"メタルドナドナ"をメタルによる説明 私の目標です。 いのあるポーカーで約億円です。になったかもしれない作り出してしまおうというものは、次PokerStars.netかんだのです。

いを作りたいと思っているプログラムを発揮できることが臨床版のカードのような代表的なプログラムを呼random().これらの必要な製品品質のデッキからの高品質ランダムます。っていると聞いている商業グレードポーカーのサーバーを使用64ビットベクター毎にカードは、このように乱数の発生源の確保のためのすべてのポーカーゲームです。

いず書いています。そのために、プログラム に必要な入力データ 達成のために述べての目標です。決定しているときにプログラムが開始されますので記録の現在の時間を利用しています。ここのアプローチがないので実現可能な商業環境のもとでセットすることができ、数億円のゲームにより簡単な選択肢となります。

私が書擬似コードをこの問題を解決するものの、家への厄介な問題ですよね。で明らかに思えたがない場合があったので、それをさしますので、ぜひ<url>までご連絡ください。

Psuedo-以下のコード:

    Start by noting the system time.
    Hash the current time (with MD5) around ten times (I chose the ten arbitrarily).
    Take the resulting hash, and use it as the seed to the language-dependent random() function.
    Call random() 52 times and store the results.
    Take the values produced by random() and hash them.
    Any hash function that produces at least 64-bits of output will do for this.
    Truncate (if the hash is too big) so the hashes will fit inside a 64-bit double.
    Find a way to map the 52 doubles (which should be random now, according to my calculations) into 52 different cards, so we can play some poker.

私の問題と最後の一歩です。できない方法を考えなければなり適切な地図毎に64ビット値に対応するカードを気にせずお二番号と同じ(はやっかりと乱数の発生源可).

私の最初のアイデアを破0x0000000000000000-0xFFFFFFFFFFFFFFFFについても部分を代表するスーツ).もしないという保証はありませんでしまう十三枚るいは悪い影響を及ぼすでしょう。

こんがと言っても過言ではない, ついてはどのように捉えていこうした課題を克服?

--編集--

読みからバイトは/dev/ランダム事)を付けています。がまだないといけないのか、ださい。)(仮を読んで十分なバイトのための52に刺しました。

でも、本当の意欲は何かを簡単に予測可能なように、システムの時間への転換をはランダム化のデッキです。播種ランダム()のシステムの時間は、ひどいことをしているのを継続して行っています。そのためのハッシュの時間ハッシュ値を出のランダム().

地獄てしまうことがありましたが、このハッシュのバイトは/dev/ランダム語、英語、ドイツ語で行われshizzlesとの大切さを教え.ハッシュの乱数の発生源のものではないでしょうか?ことはできないのでなぜか現代のパスワードの管理者パスワード店されたハッシュされた何千人ものです。

--編2--

いっくりとした回答及び私が混乱する結論も多いる.私を示唆する私の最初の編集っていますので、投げしていただきます。いう点です。

レインボーテーブルが存在しいファンキーで数学や巧妙なマジック的としてルックアップテーブルのための共通のハッシュマップする特定のパスワードになります。それが私の理解がより長く、より良いパスワードが表示され虹ます。なものがまだにもかかわらずどのように共通の多くのユーザーのパスワードのハッシュされたパスワードは安全なされた後のハッシュされた何千人ものです。

である場合多くの決定的な業務は増加している乱数の発生源のパスワード(またはそう?) と言うつもりはありませんね、っ‼私の感じです。

第のものにしたいポイントは になっていること。

う皆さこいソートされた、予測可能な非ランダムカードを使用しフィッシャー-イェイツシャッフルします。私フィッシャー-イェイツはアルゴリズムがきっせんでしたが、少し足を延ばせば使うのには理由のいかんにかかわらず

ばランダムバイトのストリームを、近416バイト(52枚のカードを8バイト/カード)やバムの制作 既にランダム デッキのですか?バイトしたランダムでなくいものではないかと思います。

ほとんどの人がデッキ52枚のカードのランダムなスワップして約束の回りのランダム指数をスワップ.いきますので、その取52乱数、走るし、一度のランダム化。

どうに記述できるので、 このアルゴリズムを受け入れのストリームを無作為化バイトで毎に8バイトのチャンク.この地図は各チャンクへのカードです。

Ex.0x123マップにエーススペード Ex.0x456マップは、キングダイヤモンド Ex.0x789マップの3クラブ ....います。

どこのモデルにマッピングです。なしシャッフリングが必要です。プログラムを減らすこと。

ステップ1:を得るのに十分な量のランダムからバイトの良いソース ステップ2:分割をこのストリームにバイトの52のチャンクは、各カードのデッキ ステップ2a:の52チャンクに変換してカード値による。

はとです。

役に立ちましたか?

解決

ご超overcomplicatingの問題です。必要な部品を解決する問題:

  1. A-シャッフリングアルゴリズム
  2. 十分に高品質な乱数ジェネレータのシャッフリングアルゴリズムを利用します。

最初は簡単にいただけます。 フィッシャー-イェイツシャッフル アルゴリズムです。

にしたい場合は、 十分な自由度 できる生き換(52!の可能性)を少なくとも226ビエントロピー.利用システムクロックだまり32または64ビットのエントロピー(実際には少なくなりほとんどのビットは予測可能か、どのように多くの冗長ハッシュょう。見RNGを使用した256ビットの種子種で256乱数ビット(a x回試問題ご利用いただけます。/dev/ランダム又はハードウェアRNG装置。

他のヒント

きんでんOSだが、現代のOSを持つようにした源の高品質のエントロピー.Linuxで /dev/random/dev/urandom, ことができ、そこから読みとして多数の乱数バイトをすることができます。

書面に自分の乱数ジェネレータは自明ではないたい場合には良い乱数の発生.他自作が可欠陥のある、可能性がある、その出力されます。

というの向上をランダムネスのご利用擬似ランダム発生器、どんなに多くの 決定論的 操作はございます。このことがあるでしょうが大幅に悪化した。

私用の乱数ジェネレータ。最多使用ハードウェアソリューション、のようにガイガーカウンタです。一部の利用、既存のユーザー入力の源泉としてのエントロピーなどの背景ノイズにコンピュータのスマートフォンの待ち時間(レイテンシのキーボードストローク.

編集:

ということであるが、もうこの地図をシャッフルアルゴリズムです。この部分はとても簡単である。一つ簡単な方法は フィッシャー-イェーツ選択することができます 基本的にはすべてから必要なRNGは乱数を均一に分散0 51含まれます。ることができな計算が与えられRNGは常に内蔵されています。の潜在的要因のバイアス"のWikipedia。

大問題です!

強い意欲をそぐような ありますが、リンクされたそれらの random る機能が内蔵ゆるプログラミング言語です。を含むに関連して発生する乱数字は暗号法論的には安いることができる巧みな攻撃者は配列番号到来しなければならないとしてカードとリバースエンジニアリングの乱数のseedです。このことからも容易に開始を予測するカードもたくさん出てくると思うの。一部の初期のポーカーサイトと言っていたりする可能性があります。

用途に必要な暗号法論的には安全な乱数とする敵な予測の配列のカードを壊すことなく、何かを暗号法論的には想定されます。これまでのいずれかを使用ハードウェア"乱数の発生源は安全な暗号化擬似乱数ジェネレータ.ハードウェアのランダム発生器の高価なため、安全な暗号化PRNGするのも良いオプションです。

あなたはとても簡単に安全な暗号化PRNG.まず安心ブロック暗号(例えば、AESや3DES) ランダムキー 開始を暗号化したファイルに保存する番号0,1,2,...。そして、結果としてできたシーケンスは暗号法論的には安心です。すなわち、利用可能 /dev/random へのランダムバイトとして使用し得乱数暗号化による整数型配列を使用し強力な暗号が、指定された鍵があります。これは確保でき、手戻約√n数、nはサイズのキースペース。のための暗号のようなAES256、この2128 前の値とする必要がリセットされ、ランダムます。の場合"のみ"選億ゲーム240このときに発生する。

武器agiは、dexで下がらないboxerぐ!電子メールアドレスを運のプロジェクト!

すべ読みに答え: 理解"乱数の発生源"

アプローチの数の任意の変換を既存の乱数シナリオが考えられる改善の結果、実際のリスクをレンダリング ランダムます。

あると考え用物由来のランダムな数字ではなく乱数:http://en.wikipedia.org/wiki/Hardware_random_number_generator

の場合は絶対に使用乱数、そうされると、日本でのビジネスオフ播種とショナルデータベースの乱数の発生源装置、あるいは追加のエントロピーからのようなディスクを回り、ユーザIO.

読みからバイトは/dev/ランダム事)を付けています。がまだないといけないのか、ださい。)(仮を読んで十分なバイトのための52に刺しました。

変換したのか?るだけでデッキのカードご利用の暗号法論的には、安PRNG, シャッフルで.このことは、可能なカードを等確率とのないことを誰でもかなりカードは次回のおすす。

ってください の実施をシャッフリングアルゴリズムの正確 :)

の実際のランダムな数字にカード(一度のアドバイスに従ってみましょうその他の成分をランダム番号、地図な最低の番号をダイヤのエース"第2回低い番号の2のダイヤモンド、。

基本的には関する実際のカードは、自然順序付けを使うの乱数および地図のデッキ。

編集

どうやらwikipediaにリストは、必要に応じてこのメソッドの代替と フィッシャー-イェイツのアルゴリズム(しんたい-コイダンダ!).ひとつのwikipedia記事を持っているときにこのようなことのできることを保証する必要がありませんの繰り返し載の乱数を使用している場合、このアルゴリズムIを記述する。

シンセサイザーを操作してみて、棚ポーカー手に評価でき こちらの.べてのフィードバックを歓迎し、e-mailアドレスを見る。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top