生成"字符"基于概率

时间:2011-12-01 14:01:24

标签: c++ random probability

我的俄罗斯方块游戏需要一些帮助 我用C ++编写代码,这是我的问题:

俄罗斯方块块列表有7种类型: {'我','J','L','S','Z','O','T'}

我需要选择以上一个字符 选择S和Z的概率为每个1/12,并选择其他块 概率为每个1/6。

根据这些概率生成块的最佳方法是什么?

4 个答案:

答案 0 :(得分:7)

声明并定义一个具有S和Z的单个出现的十二项数组;其余两次出现;并从中选择一个随机元素。

答案 1 :(得分:4)

像这样创建一个数组:

const char* block_distribution = {'I', 'I', 'J', 'J', 'L', 'L', 'S', 
                                  'Z', 'O', 'O', 'T', 'T'};

然后使用均匀分布从该数组中选择一个元素。

答案 2 :(得分:1)

将这些字符放在字符数组中,并使用srand()生成0到6之间的随机值 比你随机得到

  

char myArray [] = {'我','J','L','S','Z','O','T'};

然后使用

获取值
  

myArray [(rand()%5)+1]

答案 3 :(得分:0)

我能想到的最简单的解决方案是使用数值范围和伪随机数。

因此,首先为每个字母指定范围:

我:0到1
J:1到2
L:2到3
S:3到3.5
Z:3.5到4
O:4到5
T:5到6

然后生成0到6范围内的伪随机数。无论该数字落在哪个范围内,都是您选择的字母。

不幸的是我不知道C ++所以我无法为您提供代码,但我认为它不应该太难实现。