Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 伪随机数生成_C#_Random_Numbers - Fatal编程技术网

C# 伪随机数生成

C# 伪随机数生成,c#,random,numbers,C#,Random,Numbers,我在游戏中使用以下方法生成随机数: System.Random rnd = new System.Random (); int TileType = rnd.Next (0, 8); 问题是这些数字太随机了。数字与瓷砖有关,我没有得到20卷的特定瓷砖 我需要关于生成伪随机数的函数的指导。所以基本上我想确保我在x卷中生成每种类型的瓷砖。我想12可能是x的一个很好的起点,但我希望能够调整x 如果有人能给我指出正确的方向,我将不胜感激 更新 这就是我目前的想法。谢谢@Golo给我指路。想法 创建一个

我在游戏中使用以下方法生成随机数:

System.Random rnd = new System.Random ();
int TileType = rnd.Next (0, 8);
问题是这些数字太随机了。数字与瓷砖有关,我没有得到20卷的特定瓷砖

我需要关于生成伪随机数的函数的指导。所以基本上我想确保我在x卷中生成每种类型的瓷砖。我想12可能是x的一个很好的起点,但我希望能够调整x

如果有人能给我指出正确的方向,我将不胜感激

更新

这就是我目前的想法。谢谢@Golo给我指路。想法

创建一个我想要的数字列表。 再加上x个随机数。 shuffledList-var shuffledList=unshuffledList.OrderByx=>rand.Next.ToList; 抓取第一项并从列表中删除。 当列表为空时重新创建。
这意味着所有数字都会频繁出现,但您仍然可以重复出现,这样可以保持一种随机的感觉。

用您想要的数字创建一个列表,然后从该列表中随机选择一个元素并将其删除

重复此操作,直到列表为空,然后重新开始


这样,您将在n次尝试中获得每个数字一次,但它们的顺序将是随机的。

用您想要的数字创建一个列表,然后从该列表中随机选择一个元素并将其删除

重复此操作,直到列表为空,然后重新开始


这样,您将在n次尝试中获得每个数字一次,但它们的顺序将是随机的。

我喜欢@Golo的答案,但只是为了给它添加一个不同的旋转

听起来他的回答只会给你一次每个值。ie:在所有其他值滚动一次之前,您不会再次看到值n

为了让事情变得真正随机,同时稍微更容易预测,请尝试使用加权随机数生成器

每次选择后,您可以将所选项目的权重设置为0,以降低其下次被选中的几率,并增加选择最早未选中值的几率

这些不在.Net中,但应该让您开始学习算法


我喜欢@Golo的答案,但只是想给它添加一个不同的旋转

听起来他的回答只会给你一次每个值。ie:在所有其他值滚动一次之前,您不会再次看到值n

为了让事情变得真正随机,同时稍微更容易预测,请尝试使用加权随机数生成器

每次选择后,您可以将所选项目的权重设置为0,以降低其下次被选中的几率,并增加选择最早未选中值的几率

这些不在.Net中,但应该让您开始学习算法


不错。唯一一件事是,如果我正确地理解了n 8不同于x 12。或者使用任何其他洗牌代码选择和删除很容易编码,但由于大量复制操作,对于大型列表可能会有非常令人怀疑的性能。接近,除非在所有其他值被滚动之前,我不会再次看到值n。我想我不会对这个感到高兴的。很好。唯一一件事是,如果我正确地理解了n 8不同于x 12。或者使用任何其他洗牌代码选择和删除很容易编码,但由于大量复制操作,对于大型列表可能会有非常令人怀疑的性能。接近,除非在所有其他值被滚动之前,我不会再次看到值n。我不认为我会对此感到满意。您正在根据自己的喜好寻找随机数或加权随机数。您正在根据自己的喜好寻找随机数或加权随机数。