c# 中如何在数组中取两个不同的值

string [] city = new string[] { "北京","天津","上海","武汉", ","成都","南京"};
Random r = new Random();
string cityA = city[r.Next(city.Length)];
string cityB =city[r.Next(city.Length)];
这样取出的值有时两个是相同的,要使他们不同,怎么办?

有时的确会存在这种情况,这种原因是因为伪静机的问题,其实软件随机都是有规率可循的,这种随机不能做到真正的随机。

你还可以使用另外的随机方式,就是利用时间来取,取时间的秒后几位,然后把其他一位把随机值。虽然这种情况下可以通过研究你的算法能掌握你下一个随机数,但对于程序来说基本上已经是可以了的了!

但不管是哪种随机——只是解决了随机问题,而你的算法并没有解决冲撞问题,也就是说两者有机率会一样的。尤其在使用random时这种机率会更高。

一般情况下:
string cityA = city[r.Next(city.Length)];
string cityB
while(string.IsNllOrEmpty(cityB) || cityB == cityA)
{
cityB = city[r.Next(city.Length)];
}
如果cityB为空或者等于cityA时,让其一直循环,即可解决这种情况。

这种是一般都能 ,但是冲突机率较高,效率并不是很多。而且你只有两个数的情况下,可以考虑这种方案。

1,cityTemp 是city临地的数组。
2,随机取了cityA的值
3,将cityA取的值,从数组中去掉
4,在处理过数组中随机。
一般情况,这种情况的效率是极高,避免了冲突。在真随机的情况下,如果取最后时也是这样的较快的!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-19
先随机两个数字 判断是否相同 如果不同那就取值。如果相同,就重新随机
第2个回答  2013-05-19
本来cityA,cityB就不一样,你还想怎么个不一样法?
第3个回答  2013-05-19
明明不一样

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网