回答
你可以那样做:
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. 随机生成器Objective-C
- 2. C中的独立随机生成器
- 3. C++生成随机数-1
- 4. C#生成随机数
- 5. C++为psudo随机数生成器生成一个很好的随机种子
- 6. C++在函数中生成随机数
- 7. boost.python中的随机数生成器
- 8. Java中的随机数生成器
- 9. 随机数发生器,C++
- 10. C#中OAuth随机数的线程安全随机数/字符串生成器
- 11. 真正的随机c#生成器
- 12. 在C++中生成随机双数
- 13. 随机数生成 - ARM7上的C
- 14. 生成随机数
- 15. 随机数生成
- 16. 生成随机数
- 17. C#XNA - 随机房生成
- 18. C:生成随机迷宫
- 19. C#随机对生成
- 20. 如何用C#中的权重编写随机数生成器?
- 21. C中的随机数生成器游戏
- 22. 使用drand48_r作为C中的随机数生成器
- 23. 如何获取c#中随机数生成器的状态?
- 24. C#中的随机数生成器 - 唯一值
- 25. C#二维数组中的随机字母生成器 - 问题
- 26. 随机数生成机制
- 27. nasm随机数生成器函数
- 28. 加权随机数生成C#
- 29. 随机数生成C++在CMD
- 30. 随机数的生成
Random类? – h1ghfive 2012-08-16 09:54:46
如果在奇数列表中添加奇数,并且甚至在偶数列表中添加,则生成一个数字。 – 2012-08-16 09:55:12
提问之前做过一些研究吗? '随机'类这是你要求的 – harry180 2012-08-16 09:55:15