如何在 xCode for iPhone 中生成 3 位随机数
How to generate a 3-digit random number in xCode for iPhone
问题是我需要使用这样的代码,但它不适用于char
变量。你能帮我写代码,或者展示我们如何用数组来做到这一点吗?
法典:
char numeroMaquina[0] = arc4random() % 9;
switch(numeroMaquina[0]) {
case 0:
numeroMaquina[0] = 1;
break;
case 1:
numeroMaquina[0] = 2;
break;
case 2:
numeroMaquina[0] = 3;
break;
case 3:
numeroMaquina[0] = 4;
break;
case 4:
numeroMaquina[0] = 5;
break;
case 5:
numeroMaquina[0] = 6;
break;
case 6:
numeroMaquina[0] = 7;
break;
case 7:
numeroMaquina[0] = 8;
break;
case 8:
numeroMaquina[0] = 9;
break;
}
int numeroMaquina2 = arc4random() % 9;
switch(numeroMaquina2) {
case 0:
numeroMaquina2 = 1;
break;
case 1:
numeroMaquina2 = 2;
break;
case 2:
numeroMaquina2 = 3;
break;
case 3:
numeroMaquina2 = 4;
break;
case 4:
numeroMaquina2 = 5;
break;
case 5:
numeroMaquina2 = 6;
break;
case 6:
numeroMaquina2 = 7;
break;
case 7:
numeroMaquina2 = 8;
break;
case 8:
numeroMaquina2 = 9;
break;
}
int numeroMaquina3 = arc4random() % 9;
switch(numeroMaquina3) {
case 0:
numeroMaquina3 = 1;
break;
case 1:
numeroMaquina3 = 2;
break;
case 2:
numeroMaquina3 = 3;
break;
case 3:
numeroMaquina3 = 4;
break;
case 4:
numeroMaquina3 = 5;
break;
case 5:
numeroMaquina3 = 6;
break;
case 6:
numeroMaquina3 = 7;
break;
case 7:
numeroMaquina3 = 8;
break;
case 8:
numeroMaquina3 = 9;
break;
}
这看起来像是有人通过单词获得报酬的代码。总而言之,您的代码似乎相当于:
char NumeroMaquina[3];
for (int i=0; i<3; i++)
NumerMaquina[i] = arc4random() % 9 + 1;
我不确定你到底想完成什么。也许你真的希望它是
NumeroMaquina[i] = arc4random() % 9 + '1';
所以数组中的每个元素都是可打印的数字吗?
如果(如标题所示)您只需要一个三位随机数,那么使用以下内容可能更容易:
int number = arc4random() % 1000;
编辑:为了防止得到0,你应该使用:
int number = arc4random() % 999 + 1;
。如果你想用一串字符来转换它,你可以用sprintf
来转换它(例如):
char as_string[4];
sprintf(as_string, "%3d", number);
int myNumber = arc4Random()%899 + 100;
这将为您提供一个介于 100 和 999 之间的随机数。
我认为iPhone支持C++11/libc ++,所以:
如果你想要3个非零数字,你可以这样做:
#include <random>
int main() {
std::random_device r;
std::seed_seq seed{r(), r(), r(), r(), r(), r(), r(), r()};
std::mt19937 engine(seed);
char digits[4] = {};
std::generate(std::begin(digits),std::end(digits)-1,
std::bind(std::uniform_int_distribution<char>('1','9'),std::ref(engine)));
}
或者也许
int n = std::uniform_int_distribution<int>(0,9*9*9-1)(engine); // 3 digit number in base 9
char digits[4] = {n/9/9%9 + '1',n/9%9 + '1', n%9 + '1'}; // don't use '0' as a digit symbol
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- if数组上的随机数
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 半随机数生成C++
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 有没有办法在 c++ 中同时生成随机数?如果没有,是否有解决方法?
- 具有随机数的二维数组不会更改
- 随机数未达到限制
- 我想生成许多矩阵并用随机数填充它
- <random>在实践中应该实际使用哪个随机数引擎? std::mt19937?
- 制作具有平均值的随机数生成器
- 为什么 rand 不在我的代码中生成随机数?
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- 从给定种子生成相同的随机数序列C++
- 随机数生成函数说明
- C++ 尝试生成随机数时弹出警告帮助?
- 尝试在 c++ 中创建随机数生成器并收到错误
- 从给定的随机数组值生成随机数 Arduino程序C++
- 如何在 xCode for iPhone 中生成 3 位随机数