Tag: 概率

如何按给定百分比创建概率?

我正在尝试为游戏创建基于百分比的概率。 例如,如果一个项目有45%的几率遭到致命一击,那么这必然意味着它有50个点击中的45个是至关重要的。 首先,我尝试使用一个简单的解决方案: R = new Random(); int C = R.Next(1, 101); if (C <= ProbabilityPercent) DoSomething() 但是在100次迭代中,例如48%的可能性,它在100分中给出40-52。同样适用于49,50,51。因此,这些“百分比”之间没有区别。 问题是如何设置例如50的百分比,并严格地随机获得50的100? 对于罕见项目查找的概率而言,这是一个非常重要的事情,有机会增加找到项目的机会。 所以1%的buff会很敏感,因为现在不是。 对不起,我的英语不好。

使用rand5()生成rand7()(概率相同)

可能重复: 将随机范围从1-5扩展到1-7 我在这里看到了这个问题: 链接 作者提供的解决方案似乎没有产生相同的概率。 例如,在函数的10k调用中,数字4被返回1-2次(当其他数字,如2,每次返回大约2k次时)。 也许我理解错了,或者我写的算法错了,但是在这里: static int rand5() { return new Random().Next(1, 6); } static int rand7() { while (true) { int num = 5 * (rand5() – 1) + rand5(); if (num < 22) return ((num % 7) + 1); } } static void Main(string[] args) { int limit = 10000; int[] […]

C#中分形Perlin噪声函数的均匀分布

我的Perlin噪声函数(在0.75持续时间内加上6个八度的3D单形)产生一个double s的2D数组。 这些数字各自归一化为[-1,1],均值为0.我将它们钳制以避免exception,我认为这是由于浮点精度问题,但我相当确定我的缩放因子足够好在理想情况下,将噪声输出限制在这个邻域。 无论如何,这都是细节。 关键是,这是一个256乘256的噪音arrays: 具有正常拟合的直方图如下所示: Matlab的lillietest是一个函数,它应用Lilliefors测试来确定一组数字是否来自正态分布。 我的结果反复是1,这意味着这些数字不是正态分布的。 我想要一个函数f(x) ,当应用于我的噪声函数的值列表时,结果看起来是均匀分布的。 我希望这个函数可以在C#中实现,而不需要花费几分钟来运行。 再一次,数字的来源无关紧要(问题在于将一个分布转换为另一个分布,特别是正常的分布转换为统一分布)。 不过,我的噪音function实现基于此和此 。 您可以在此处找到上述值数组。

生成随机布尔概率

我只知道如何生成随机布尔值(true / false)。 默认概率为50:50 但是,如何以自己的概率生成真正的假值? 假设它以40:60或20:80等概率返回true …

基于百分比的概率

我有这段代码: Random rand = new Random(); int chance = rand.Next(1, 101); if (chance <= 25) // probability of 25% { Console.WriteLine("You win"); } else { Console.WriteLine("You lose"); } 我的问题是,它真的计算出25%的获胜概率吗? 在这里赢球的机会是25%? 编辑: 我刚刚写了这个: double total = 0; double prob = 0; Random rnd = new Random(); for (int i = 0; i < 100; i++) { […]

游戏设计/理论,Loot Drop Chance / Spawn Rate

我有一个非常具体和冗长的问题。 这个问题是关于编程和游戏理论的。 我最近在我的回合制战略游戏中添加了可产卵的矿石: http ://imgur.com/gallery/0F5D5Ij(对于那些看起来请原谅开发纹理的人)。 现在,谈到我一直在考虑的谜。 在我的游戏中,每次创建新地图时都会生成矿石。 每级创建生成0-8个矿石节点。 我已经有了这个工作; 除此之外它只生成“绿gem”,这让我想到了问题。 程序员如何才能使节点具有特殊的稀有性? 考虑这个简短的模型,它实际上不是游戏数据: (Pseudo Chances节点将是以下之一) Bloodstone 1 in 100 Default(Empty Node) 1 in 10 Copper 1 in 15 Emeraldite 1 in 35 Gold 1 in 50 Heronite 1 in 60 Platinum 1 in 60 Shadownite 1 in 75 Silver 1 in 35 Soranite 1 in 1000 […]

使用Walker的Alias方法进行加权随机选择

我在找这个算法 (将从每个元素具有不同被挑选概率(权重)的元素列表中随机选择的算法) 并且发现只有python和c实现,在我做了一个C#之后,有点不同(但我认为更简单)我想我应该分享它,我也需要一个F#imlementation ,如果有人可以做到它请发表回答 using System; using System.Collections.Generic; using System.Linq; namespace ChuckNorris { class Program { static void Main(string[] args) { var oo = new Dictionary { {“A”,7}, {“B”,1}, {“C”,9}, {“D”,8}, {“E”,11}, }; var rnd = new Random(); var pick = rnd.Next(oo.Values.Sum()); var sum = 0; var res = “”; foreach (var o in oo) […]

分布式概率随机数发生器

我想根据分布式概率生成一个数字。 例如,只是说每个数字有以下几种情况: Number| Count 1 | 150 2 | 40 3 | 15 4 | 3 with a total of (150+40+15+3) = 208 then the probability of a 1 is 150/208= 0.72 and the probability of a 2 is 40/208 = 0.192 如何根据此概率分布创建一个返回数字的随机数生成器? 我很高兴现在基于静态的硬编码集,但我最终希望它从数据库查询中获得概率分布。 我见过类似这样的例子,但它们不是很通用。 有什么建议?

概率随机数发生器

假设我正在编写一个简单的运气游戏 – 每个玩家按Enter键,游戏会在1-6之间为他分配一个随机数。 就像一个立方体。 在游戏结束时,数量最多的玩家获胜。 现在,让我们说我是个骗子。 我想写游戏,所以玩家#1(将是我)的概率为90%得到6,而2%得到每个剩下的数字(1,2,3,4,5)。 如何随机生成数字,并设置每个数字的概率?

创建自己的Tinyurl风格的uid

我正在写一篇关于Guids / UID的人类可读替代品的小文章,例如在TinyURL上用于url哈希的那些(通常在杂志中打印,因此需要简短)。 我生成的简单uid是 – 6个字符:小写字母(az)或0-9。 “根据我的计算队长”,这是6个相互排斥的事件,虽然计算冲突的概率比P(A或B)= P(A)+ P(B)稍微硬一点,显然它包括数字和来自下面的代码,您可以看到它是否使用50/50的数字或字母。 我对冲突率很感兴趣,如果下面的代码是对生成哈希值的预期冲突率的真实模拟。 平均而言,我每百万得到40-50次冲突,但是考虑到uid不会一次产生一百万次,但可能每分钟只能产生10-1000次。 每次发生冲突的概率是多少,谁能建议更好的方式呢? static Random _random = new Random(); public static void main() { // Size of the key, 6 HashSet set = new HashSet(); int clashes = 0; for (int n=0;n < 1000000;n++) { StringBuilder builder = new StringBuilder(); for (int i =0;i 0.5) { […]