相关疑难解决方法(0)

随机化List <T>

在C#中随机化通用列表顺序的最佳方法是什么?我在一个列表中有一组有限的75个数字,我想为其分配一个随机顺序,以便为抽奖类型的应用程序绘制它们.

c# generic-list

795
推荐指数
13
解决办法
40万
查看次数

使用Random和OrderBy是一个很好的shuffle算法吗?

我在Coding Horror上读过一篇关于各种shuffle算法的文章.我已经看到人们已经在某个地方对列表进行了洗牌:

var r = new Random();
var shuffled = ordered.OrderBy(x => r.Next());
Run Code Online (Sandbox Code Playgroud)

这是一个很好的shuffle算法吗?它是如何工作的?这样做是否可以接受?

c# algorithm shuffle

160
推荐指数
5
解决办法
4万
查看次数

从C#中的字符串数组中获取随机值的最快方法?

在.net 2.0框架中从C#中的字符串数组中获取随机值的最快方法是什么?我想他们可能有这个:

string[] fileLines = File.ReadAllLines(filePath);
fileLines.GetRandomValue();
Run Code Online (Sandbox Code Playgroud)

是的,我知道GetRandomValue()不是一个实际的方法,是否有类似的东西或多或少同样短而甜?

c# arrays string .net-2.0

4
推荐指数
1
解决办法
2827
查看次数

如果可能,从O(1)中的32位值中选择随机位

我有一个32位随机值(比方说631).

0...0000001001110111

每个位都是一个标志.如果可能的话,我想从这些位返回一个随机标志,进行O(1)操作.如何从给定值中选择位位置0,1,2,4,5,6或9(或它的对应值1,2,4,16,32,64,512)631?优选地,对于某些位具有至少可能的偏置.

我提出的事情:

    • 移位值右边的随机位数(在这种情况下最多10个)
    • 看看是否设置了LSB
      • 如果是:得到一个位置(最后移位的位数); DONE
      • 如果不:
        • 如果结果值== 0; 重来
        • 如果结果值!= 0,则返回再次移位随机位

上面不是O(1),如果我们碰巧只"击中"0位,可能需要多次迭代.

    • 掩码(和)随机值
    • 重复直到剩余2的幂或当值为0时重新开始.

同样,不幸的是,上面不是O(1).

我很确定这必须是可能的,有些bithisfting/masking /魔法......


编辑:

正如CodeCaster建议的那样 ; 这将给我所有设置位值:

int myvalue = 631;
var matchingmasks = Enumerable.Range(0, 32)
                              .Select(i => 1 << i)
                              .Where(i => (myvalue & i) == i)
                              .ToArray();
Run Code Online (Sandbox Code Playgroud)

从结果数组中我可以选择一个随机元素,我将从给定值中找到我的"随机"位(标志).但是,这仍然需要一个(隐藏的,因为Linq)for循环,"强制"每个可能的位,结果数组的内存分配等.

c# algorithm bit-manipulation

2
推荐指数
1
解决办法
903
查看次数

从列表中选择一种随机颜色

如何制作随机颜色生成器,但只使用我为程序选择的 5 种颜色。我正在做一个优先系统,它使用颜色来归因于医院的每个病人。

提前致谢。

c# random colors generator

-1
推荐指数
1
解决办法
1886
查看次数