繁体   English   中英

随机二进制生成器(非伪)

[英]Random Binary Generator (not pseudo)

我如何生成随机二进制值让我们说10个数字0010101001我想调用这个C1我想再创建另一个名为C2同一个随机10位二进制数。

C#是我的首选语言。

c#是否有bitset类

简单的东西会很好,比如

int C1

for ( int C1 = 0; <=10; C1++)
     output bitset<0>

return 0;

需要存储c1和c2 tho。

如果你想要真正的随机数,你需要你的计算机可能没有的硬件。 但是,它可以简单而廉价地添加 - 例如,请参见此处

但是,我认为一个好的伪随机生成器,例如Boost附带的那些 - 看一下Boost随机数生成器就可以满足你的需求了

您可能对Ivy Bridge Intel处理器中提供的rdrand指令感兴趣。 它的熵源使用硅片内的热噪声(参见DRNG软件实施指南 )。

英特尔提供rdrand C ++库 因此,您需要编写托管C ++包装程序集以从C#中使用它。 我刚刚使用库编译了测试项目,但我的处理器不支持该指令。

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

编辑:在“(非伪)”添加到标题之前添加此答案

编辑:我推荐其他答案中列出的方法,具体取决于一个人的需要(伪随机,加密伪随机,真正随机等)

听起来你正在寻找BitArray类或RNGCryptoServiceProvider类。

谷歌搜索[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);

话虽这么说,你可能正在寻找一个“伪随机”来源。

编辑:在“(非伪)”添加到标题之前添加此答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM