如何生成随机二进制值,可以说10个数字0010101001
,我想调用此C1
然后我想创建另一个名为C2
的同一个随机10位二进制数字
C#是我的首选语言。
是否有c#
的bitset类简单的事情会很好,比如
int C1
for ( int C1 = 0; <=10; C1++)
output bitset<0>
return 0;
需要存储c1和c2 tho。
答案 0 :(得分:4)
如果你想要真正的随机数,你需要你的电脑可能没有的硬件。但是,它可以简单而廉价地添加 - 例如,请参阅here。
但是,我认为一个好的伪随机生成器,例如Boost附带的那些 - 请参阅Boost random number generator作为示例,将足以满足您的需求
答案 1 :(得分:2)
function randomInt(max)
// produces integer with uniform distribution between [0,max)
# this should be in your standard library
# though perhaps not by this name; and you may need to
# initialize and maybe randomly seed your RNG beforehand
myRandomBinaryNumber = randomInt(2^10) // then cast it if required
编辑:在“(非伪)”添加到标题
之前添加此答案编辑:我推荐其他答案中列出的方法,具体取决于一个人的需求(伪随机,加密伪随机,真正随机等)。
答案 2 :(得分:2)
您可能对Ivy Bridge Intel处理器中提供的rdrand指令感兴趣。它的熵源使用硅内的热噪声(见DRNG Software Implementation Guide)。
英特尔提供rdrand C++ library。因此,您需要编写托管C ++包装程序集以从C#中使用它。我刚刚使用库编译了测试项目,但我的处理器不支持该指令。
答案 3 :(得分:1)
听起来您正在寻找BitArray
班级或RNGCryptoServiceProvider
班级。
答案 4 :(得分:1)
搜索[C#随机数]会导致http://social.msdn.microsoft.com/Forums/en/Vsexpressvcs/thread/55fb3116-c978-4ac8-9381-a2605e16e256成为第三次点击。
Random random = new Random();
int randomNumber = random.Next(0, 2^10);
话虽如此,你可能正在寻找一个“伪随机”来源。
编辑:在“(非伪)”添加到标题
之前添加此答案