小编Cae*_*mon的帖子

How to get sufficient entropy for shuffling cards in Java?

I'm working on a statistics project involving cards and shuffling, and I've run across an issue with random number generation.

简单算一下,有 52 个!可能的牌组排列,大约为 2^226。我相信这意味着我需要一个至少具有 226 位熵的随机数生成器,甚至可能更多(我不确定这个概念,所以任何帮助都会很棒)。

通过 google 快速搜索,Math.random()Java 中的生成器最多具有 48 位熵,这意味着绝大多数可能的牌组组合都不会被表示。所以这似乎不是 Java 中应该走的路。

我已链接到生成器,但它还没有 java 实现。另外,这里还有我的一种洗牌算法(它使用 Fisher-Yates 方法),以提供一些背景信息。如果您有任何提高代码效率的建议,那也很棒。

public void shuffle(int type, int swaps){
    int[] newDeck = getNewDeck();

    if(type == 1){
        for(int i = 0; i < 52; i++){
            int nextCardIndex = (int)(Math.random()*newDeck.length);
            deck[i] = newDeck[nextCardIndex];
            newDeck = removeItem(nextCardIndex, newDeck);
        }
    }
}

public int[] …
Run Code Online (Sandbox Code Playgroud)

java random random-seed

4
推荐指数
1
解决办法
782
查看次数

标签 统计

java ×1

random ×1

random-seed ×1