小编Hal*_*ked的帖子

C#只从RNGCryptoServiceProvider获取1-15的数字?

由于RNGCryptoServiceProvider比Random()更"安全"(产生高质量的随机数),我觉得使用它.性能不是问题.但是,而不是读取最后一位数字,并以某种方式决定何时在它之前添加0或1 ..是否有更好(更准确)的方式?

byte[] data = new byte[4];
rng.GetBytes(data);
int value = BitConverter.ToInt32(data, 0);
Console.WriteLine(value);
Run Code Online (Sandbox Code Playgroud)

c# random

3
推荐指数
1
解决办法
2789
查看次数

BinaryFormatter 和反序列化。如何在流结束时停止?

这可能可以通过 foreach 循环来完成。但是.. while / for 也应该有效。如果我有一个类 MyClass,并写入 MyClass 的 100 个对象。反序列化时如何在文件末尾停止?提前致谢

FileStream inStr = new FileStream(@"file.dat", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();

MyClass myclass = new MyClass();

while (???) // What to put here? EOF / End of stream check
{
myclass = (MyClass)bf.Deserialize(inStr);
//...
}
Run Code Online (Sandbox Code Playgroud)

c# serialization filestream

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

这种生成随机数的方法有多"好"?

我在google上搜索RNGCryptoServiceProvider,其中包含如何限制Max和Min之间范围的示例,并且仍能获得均匀分布.在我使用模运算符之前,但有时我得到奇怪的值(高于Max)...无论如何这个代码(信用到未知)种子随机使用来自RNGCCryptoServiceProvider的新种子,每次调用该方法.你们有什么感想?

public static int GetRandom(int min, int max)
{
  byte[] b = new byte[sizeof(int)];
  new System.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(b);
  int i = BitConverter.ToInt32(b, 0);
  Random r = new Random(i);
  return r.Next(min, max);
}
Run Code Online (Sandbox Code Playgroud)

c# random cryptography rngcryptoserviceprovider

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

如何在我自己的类上有多个扩展方法,像这样?

string "hello world".toLower().toUpper().replace("o", "x");
Run Code Online (Sandbox Code Playgroud)

如何使我自己的类能够在上面的示例中使用像string这样的扩展方法?也许没那么有用,但我无法弄清楚如何去做

c# extension-methods class

0
推荐指数
1
解决办法
60
查看次数