【发布时间】:2011-08-31 14:51:30
【问题描述】:
在 Python 中,我可以这样做:
>>> import random
>>> ints = [1,2,3]
>>> random.choice(ints)
3
在 C# 中我做的第一件事是:
var randgen = new Random();
var ints = new int[] { 1, 2, 3 };
ints[randgen.Next(ints.Length)];
但这需要索引,ints 的重复也困扰着我。所以,我想出了这个:
var randgen = new Random();
var ints = new int[] { 1, 2, 3 };
ints.OrderBy(x=> randgen.Next()).First();
仍然不是很好和高效。有没有更优雅的方式从 IEnumberable 中获取随机值?
【问题讨论】:
-
假设你的意思是
IEnumerable,但考虑到这个问题,我从IEnumberable得到了一个大声笑:) -
你的
IEnumerable的来源是什么? -
RandomElement 函数似乎是您正在寻找的。 stackoverflow.com/questions/648196/random-row-from-linq-to-sql/…
-
@JonH:不,我不想生成随机枚举。
标签: c#