E. *_*fat 44
好吧,一种方法是Random.Next(100) <= 20 ? true : false,使用NextInt的整数值来强制你自己的概率.我不能说这种方法的真正"随机性".
更详细的例子:
Random gen = new Random();
int prob = gen.Next(100);
return prob <= 20;
Run Code Online (Sandbox Code Playgroud)
Pet*_* O. 18
您生成一个最多100个独占的随机数,并查看它是否小于给定的百分比.例:
if(random.Next(100) < 40) {
// will be true 40% of the time
}
Run Code Online (Sandbox Code Playgroud)
更一般地说,对于X/Y的概率,使用如下的成语:
if(random.Next(Y) < X)
Run Code Online (Sandbox Code Playgroud)
Ham*_*jam 10
这是一个扩展方法,它将提供一个具有指定概率(百分比)为真的随机bool;
public static bool NextBool(this Random r, int truePercentage = 50)
{
return r.NextDouble() < truePercentage / 100.0;
}
Run Code Online (Sandbox Code Playgroud)
你可以使用这个
Random r = new Random();
r.NextBool(); // returns true or false with equal probability
r.NextBool(20); // 20% chance to be true;
r.NextBool(100); // always return true
r.NextBool(0); // always return false
Run Code Online (Sandbox Code Playgroud)
小智 8
假设你的概率表示double在0.0和1.0之间,我会更简单地实现它:
Random rand = new Random();
...
double trueProbability = 0.2;
bool result = rand.NextDouble() < trueProbability;
Run Code Online (Sandbox Code Playgroud)
result将以true给定的概率trueProbability
http://msdn.microsoft.com/en-us/library/system.random.nextdouble(v=vs.110).aspx
如果这不是" 随机 ",你可以看看RNGCryptoServiceProvider:
小智 7
我认为它可以帮助你
Random gen = new Random();
bool result = gen.Next(100) < 50 ? true : false;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42909 次 |
| 最近记录: |