検索

ホームページ  >  に質問  >  本文

Java は 6 桁の非反復乱数を生成します。友達を助けてください。

サイクルに繰り返さないものはないのはわかっています~、そして繰り返し率を下げるしかないのですが、それでも試してみる必要があります~、試してくれる道教の友人はいますか~

曾经蜡笔没有小新曾经蜡笔没有小新2711日前1124

全員に返信(5)返信します

  • 仅有的幸福

    仅有的幸福2017-06-28 09:25:14

    ランダム性の意味は、一般的に、A1 A2 がわかっても A3 の意味を推測できないということだと思います。
    あなたが言及した値の繰り返しの問題は、それぞれの値を取得する確率が等しい場合、結果が「ランダム」であることを意味しますが、それは十分に「ランダム」ではないことを意味します。 。

    値が重複しないように厳密に制限する必要がある場合は、保管場所が必要であり、この重複しないには時間または空間の範囲も必要です。

    返事
    0
  • 某草草

    某草草2017-06-28 09:25:14

    私は以前、CSDN で非反復番号をランダムに生成するアルゴリズムを見ました:

    リーリー

    返事
    0
  • 阿神

    阿神2017-06-28 09:25:14

    愚かな方法は、配列を直接初期化し、各数値を正しい位置に配置してから、最初の結果を最後の桁と交換し、2 番目の結果を最後から 2 番目の桁と交換することです。 , 交換後は次回ランダムに選出されますそれに伴い数値の範囲も1つ減ります。

    効率に関しては、投稿者が実装できます。

    リーリー

    返事
    0
  • 大家讲道理

    大家讲道理2017-06-28 09:25:14

    ライフサイクルが長い場合、100,000は簡単に使い切ってしまいます。どのように生成しても繰り返します。

    1. 最も単純な Math.random()*10_0000 を int に変換します。それが繰り返されないという保証はありません。

      increment、mysql の主キーのインクリメントと同様に、1 から開始し、6 桁未満の場合は前を補うために 0 を使用します
    2. 上級ポイント: 6 桁の数値は、さまざまな影響要因を使用して組み合わせることができます。もちろん、この数値は比較的短く、考慮すべき要因はそれほど多くありません。
    3. 最後に、分散システム ID の生成に関する参考リンクを示します。これは問題とは関係ないかもしれませんが、参考情報もあります。

      返事
      0
  • 怪我咯

    怪我咯2017-06-28 09:25:14

    リーリー

    0 ~ 100 が範囲、6 が数値です。さらに重要なのはスレッドの安全性です。

    返事
    0
  • キャンセル返事