c - 我可以为 rand() 函数指定条件吗?
问题描述
我想生成一个在 1 到 6 范围内的随机数(我知道怎么做),但不等于 4 个其他变量(例如,它们的名称是“num1”、“num2”、算法中的“num3”和“num4”)。我可以这样做吗?如何?
解决方案
这个问题(目前)不清楚,但从评论中的澄清来看:
您想要四个变量,每个变量都有一个介于 1 和 6(含)之间的随机值,但没有重复?
假设实际上您需要 5 个变量,因为问题指出:
不等于4 个其他变量
那么因为您需要来自 6 种可能性的 5 个唯一变量。最简单的解决方案是随机选择一种可能性来省略。此外,存储 5 个相同类型的值的明智方法是使用单个数组变量而不是五个单独的变量 - 它使代码更简单。
int num[5] ;
int omit = 1 + rand() % 6 ;
for( int i = 0, j = 0; i < sizeof(num) / sizeof(*num); i++, j++ )
{
if( i != omit ) num[j] = i ;
}
请注意,1 + rand() % 6
即使rand()
完全随机,表达式也会对某些值产生偏差。如果这是一个问题,读者可以做一个练习。
推荐阅读
- postgresql - PostgreSQL - 创建从文本到整数的转换会引发 max_stack_depth 错误
- html - jQuery 使用 cookie 展开/隐藏
- python - 如何使用 python 和 smtplib 阅读电子邮件
- spring-mvc - 是否可以将 mybatis-config.xml 转换为 Spring MVC 的类文件?
- python - 阿拉伯语文本分析期间 Python 中的 FileNotFoundError
- azure-cognitive-search - 可以通过搜索索引的 Azure 表属性的大小限制?
- android - 将函数作为可序列化参数发送到新活动/片段是否安全?
- firemonkey - 在 Windows 上的 FMX 中隐藏任务栏按钮
- java - 检测 LineString / MultiLineString 是否在 Polygon 内,或者是否使用 JTS 库与其相交
- java - 改造:无网络取消通话