rand() and srand() function opengl visual cpp

rand() and srand() function opengl visual cpp

本文关键字:visual cpp opengl srand and rand function      更新时间:2023-10-16

我正在用opengl制作一个吃豆人游戏,我需要生成2个不同的数字0或1,它们负责我的吃豆人的方向偏离他所走的方向。

如何使用 rand() 函数生成一个数字,该

函数为一个数字生成 75% 的随机性,为另一个数字生成 25% 的随机性?

如果我做:

n = rand() % 3;

它将得到 2 个不同的数字。问题是我不知道如何做出的随机性百分比。我可以用一个cicle和一个计数器来做它。但是有人告诉我可以直接在 rand() 函数中执行此操作。我搜索,但我在谷歌上找不到任何具体的东西。

使用<random>库。bernoulli_distribution将在给定概率 p 下生成 true,在概率 1-p 下生成 false。

#include <random>
#include <iostream>
#include <algorithm>
#include <iterator>
int main() {
    std::generate_n(std::ostream_iterator<bool>(std::cout," "), 10,
                    std::bind(std::bernoulli_distribution(0.25), std::mt19937()));
}

指纹:

1 0 0 1 0 0 1 0 0 0 

您始终可以使用从 ab 的均匀分布的随机范围,并检查您的条件,如下所示:

if((rand() % 100)>=75)
    // 25%
    ;
else
    // 75 %
    ;

rand() 给你一个介于 0 和 RAND_MAX 之间的随机数(典型的 32k)

因此,一半的值将在 0 和 RAND_MAX/2 之间,1/3 将在 0 和 RAND_MAX/3 之间,2/3 将在 RAND_MAX/3 和 RAND_MAX 之间。

这足以提示吗?