使用256个随机位生成数字的最佳方法是什么?
连接随机字节是否有效?
byte[] data = new byte[32];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetNonZeroBytes(data); // should include zero bytes?
string number = BitConverter.ToString(data, 0).Replace("-", "");
此外,使用这些数字的非重复对一副牌进行排序是否合适呢?
答案 0 :(得分:5)
是否可以连接随机字节取决于您使用的随机数生成器。一些随机数发生器表现出串行相关。对于这些随机数生成器,连接会很糟糕。
如果您使用这些随机数进行crypotgraphic目的,您应该查看Blum Blum Shub。否则,请查看Mersenne Twister。
为了改组有限集,请查看Fisher-Yates shuffle。
答案 1 :(得分:3)
使用Knuth Shuffle进行洗牌的正确方法。它简单而完美。假设使用良好的RNG,所有可能的卡片订单都具有相同的可能性。
答案 2 :(得分:0)
是的,连接随机字节会起作用。
编辑:不确定为什么你需要256位来洗牌一副牌,你能进一步扩展那部分吗?
答案 3 :(得分:-1)
如果随机字节生成器是好的,任何方法都可以正常工作,并且您的卡洗牌方法也是合适的。