c - 如何以随机方式在两个值之间进行选择?
问题描述
我正在尝试随机选择两个数字之一:2
或-2
. 有没有办法做到这一点?我正在尝试实现一种算法来创建迷宫。
解决方案
你有来自 C 标准库,它返回范围 [0, ]rand()
内的伪随机整数。RAND_MAX
您可以使用此函数并选择两个数字之一,检查返回的值是高于还是低于RAND_MAX/2
。
首先,使用srand()
一些种子来初始化伪随机数生成器。这样做很常见,time()
因为它每次都返回不同的值。
srand(time(NULL));
int rnd = rand();
int result = (rnd > RAND_MAX/2) ? 2 : -2;
或者,您可以使用由返回的值的最低有效位rand()
,正如另一个答案中所建议的那样,因为返回的值的一半是奇数,一半是偶数:
int result = (rnd & 1) ? 2 : -2;
推荐阅读
- r - 如何在 excel 中设置我的数据以读入 r,类似于来自 Simmr 包的示例数据
- apache-kafka - 使用 Threadpool 消费 kafka 消息增加内存使用
- android - 如何在 Android 应用程序中为给定语言环境剥离某些资产文件
- javascript - 使用 Turbolinks 在 Rails 项目中拆卸/重置 Hubspot 表单
- java - 在 Jakarta EE JSF Web 应用程序中使用实时数据库(如 firestore)
- python - 如何将列表排序为接近 0 的值
- ruby-on-rails - 我在尝试显示用户个人资料页面时遇到错误“参数丢失或值为空:user_id”
- javascript - 错误:找不到中央目录的结尾
- python - FutureWarning:如果 dtype='numeric',字节/字符串数组将被转换为十进制数
- javascript - 过滤并返回数组的多个值