在C#中,如何从一系列值中获取一个随机数 - 如1..100,但该数字不应该在某些特定的值列表中,如5,7,17,23?
在Python中,我可以这样做:
>>> import random
>>> ints = [1,2,3]
>>> random.choice(ints)
3
Run Code Online (Sandbox Code Playgroud)
在C#中,我做的第一件事是:
var randgen = new Random();
var ints = new int[] { 1, 2, 3 };
ints[randgen.Next(ints.Length)];
Run Code Online (Sandbox Code Playgroud)
但这需要索引,也需要复制ints困扰我.所以,我想出了这个:
var randgen = new Random();
var ints = new int[] { 1, 2, 3 };
ints.OrderBy(x=> randgen.Next()).First();
Run Code Online (Sandbox Code Playgroud)
仍然不是很好,很有效率.是否有更优雅的方式从IEnumberable获取随机值?