如何在 iPhone 的 xCode 中生成 3 位随机数
Posted
技术标签:
【中文标题】如何在 iPhone 的 xCode 中生成 3 位随机数【英文标题】:How to generate a 3-digit random number in xCode for iPhone 【发布时间】:2012-04-11 23:45:57 【问题描述】:问题是我需要使用这样的代码,但它不适用于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;
【问题讨论】:
我是否正确地说您只想要一个介于 1 和 9 之间的数字,而不是 0 和 8?如果是这样,那么做numeroMaquina[0]=numeroMaquina[0]+1
【参考方案1】:
这看起来像是有人通过文字获得报酬的代码。总而言之,您的代码似乎相当于:
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 点,我很累,所以我要睡觉了 是的,我喜欢一个三位数的数字,但我不喜欢它是否有“0”。【参考方案2】:int myNumber = arc4Random()%899 + 100;
这会给你一个 100 到 999 之间的随机数。
【讨论】:
【参考方案3】:我认为 iPhone 支持 C++11/libc++,所以:
如果你想要 3 个非零数字,你可以这样做:
#include <random>
int main()
std::random_device r;
std::seed_seq seedr(), 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
【讨论】:
以上是关于如何在 iPhone 的 xCode 中生成 3 位随机数的主要内容,如果未能解决你的问题,请参考以下文章
如何在 XCode 中生成 iOS 13 SwiftUI 项目?