【发布时间】:2012-12-28 13:39:23
【问题描述】:
我想为变量vStreamID 分配一个随机数。只要我的字典md_StreamDict包含生成的数字,这个数字就应该是新生成的。
长版:
vStreamID = (new Random()).Next(1000, 9999).ToString();
while (md_StreamDict.ContainsKey(vStreamID)) {
vStreamID = (new Random()).Next(1000, 9999).ToString();
}
我想看看 LINQ 风格的东西
md_StreamDict.ContainsKey(vStreamID)
.while( x => x = (new Random())
.Next(1000, 9999)
.ToString();
我知道上面的例子是香蕉。但是,如果有真正的方法可以实现这一目标,我会很高兴。不,我们不会再次开始通常的关于可读性的讨论。 ;)
【问题讨论】:
-
如果你使用
do { } while ();,即使是长版本也可能会更短:-) -
所以你只需要一个确定音调的数字,而这个数字不应该已经在字典中,为什么你需要 Random 呢?
-
我认为 Neurodefect 需要在他的字典中添加一个新项,其中的键是随机的,并且字典中不存在。为什么是 linq,不知道..
-
永远不要多次致电
new Random()。只需创建一个Random实例,然后重用该随机数生成器。否则,您可能会创建相同的Random实例(从一个实例到下一个实例的时间可能没有变化),然后.Next(...)将为每个Random实例提供相同的编号。 -
如果您希望
9999成为可能的结果,请改用.Next(1000, 10000)。
标签: c# linq loops syntax random