回答
你可以那样做:
private static int RandomNumberEven(int min, int max)
{
Random random = new Random();
int ans = random.Next(min, max);
if (ans % 2 == 0) return ans;
else
{
if (ans + 1 <= max)
return ans + 1;
else if (ans - 1 >= min)
return ans - 1;
else return 0;
}
}
private static int RandomNumberOdd(int min, int max)
{
Random random = new Random();
int ans = random.Next(min, max);
if (ans % 2 == 1) return ans;
else
{
if (ans + 1 <= max)
return ans + 1;
else if (ans - 1 >= min)
return ans - 1;
else return 0;
}
}
如果你没有对distribuition任何特殊要求,你可以使用常规的随机C#功能:
Random rnd = new Random();
rnd.Next(int.MaxValue/2)*2; // an even integer
rnd.Next(int.MaxValue/2)*2+1; // an odd integer
注意 你可能会调整最小/最大范围从而避免溢出并保持在您的范围内。
@NikhilAgrawal如果你要求一个奇数/偶数你已经泄漏了随机性:但你需要一次调用偶数和一次奇数这两个不相关:) – 2012-08-16 10:13:51
此代码可能会导致溢出并导致负数。您需要检查溢出或像这样限制它:rnd.Next(int.MaxValue/2); – 2012-08-16 10:18:33
@TomasGrosup是的,你是正确的,它是在评论中,但我修改了代码无论如何工作。 – 2012-08-16 10:29:25
使用此
(我假设你需要10个奇数和10连号)
Random r = new Random();
List<int> even = new List<int>();
List<int> odd = new List<int>();
while(even.Count < 10 || odd.Count < 10)
{
int i = r.Next();
if(i % 2 == 0)
{
if(!even.Contains(i) && even.Count < 10)
even.Add(i);
}
else
{
if(!odd.Contains(i) && odd.Count < 10)
odd.Add(i);
}
}
您的代码正在寻找OP中没有说明的*独特*均数/赔率数字。如果请求的数量是>> 10 * Contains *会增加太多的复杂性。 – 2012-08-16 10:45:53
- 1. C++中的C++随机数生成器
- 2. 随机数生成器帮助不生成随机数 - C
- 3. 随机生成器Objective-C
- 4. C中的独立随机生成器
- 5. C - 生成随机数
- 6. C++生成随机数-1
- 7. C#生成随机数
- 8. C++为psudo随机数生成器生成一个很好的随机种子
- 9. C与Java中的随机数生成
- 10. C中的随机数生成#
- 11. 随机数据生成器
- 12. Python随机数生成器
- 13. 随机数据生成器
- 14. 在c中生成整数随机数#
- 15. C++在函数中生成随机数
- 16. boost.python中的随机数生成器
- 17. Java中的随机数生成器
- 18. Python中的随机生成器函数
- 19. 随机数发生器,C++
- 20. C#中OAuth随机数的线程安全随机数/字符串生成器
- 21. 真正的随机c#生成器
- 22. C++生成25位数的随机数?
- 23. 在C中生成随机数字
- 24. 在C++中生成随机双数
- 25. 生成随机数:计算随机生成的x次数
- 26. 生成随机数的代码C++
- 27. C++随机生成16的倍数
- 28. C++随机生成的数字
- 29. 随机数生成 - ARM7上的C
- 30. 如何生成大的随机数C
Random类? – h1ghfive 2012-08-16 09:54:46
如果在奇数列表中添加奇数,并且甚至在偶数列表中添加,则生成一个数字。 – 2012-08-16 09:55:12
提问之前做过一些研究吗? '随机'类这是你要求的 – harry180 2012-08-16 09:55:15