问题是我需要使用这样的代码,但它不适用于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;
}
答案 0 :(得分:5)
这看起来像某个人通过这个词付钱的代码。总而言之,您的代码似乎与以下内容相当:
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);
答案 1 :(得分:1)
int myNumber = arc4Random()%899 + 100;
这将为您提供100到999之间的随机数。
答案 2 :(得分:0)
我认为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