ios 中生成随机数

ios 有如下三种随机数方法:

1.    srand((unsigned)time(0));  //不加这句每次产生的随机数不变
        int i = rand() % 5;      

2.    srandom(time(0));
        int i = random() % 5;

3.    int i = arc4random() % 5 ;

 

注:rand()和random()实际并不是一个真正的伪随机数发生器,在使用之前需要先初始化随机种子,否则每次生成的随机数一样。

arc4random() 是一个真正的伪随机算法,不需要生成随机种子,因为第一次调用的时候就会自动生成。而且范围是rand()的两倍。在iPhone中,RAND_MAX是0x7fffffff (2147483647),而arc4random()返回的最大值则是 0x100000000 (4294967296)。

精确度比较:arc4random()  >  random()  >  rand()。

 

常用方法:arc4random

 

1、获取一个随机整数范围在:[0,100)包括0,不包括100

int x = arc4random() % 100;

2、  获取一个随机数范围在:[500,1000),包括500,不包括1000

int y = (arc4random() % 501) + 500;

3、获取一个随机整数,范围在[from,to),包括from,不包括to

-(int)getRandomNumber:(int)from to:(int)to

{

    return (int)(from + (arc4random() % (to – from + 1)));

}

 

  参考:

1.http://kb.cnblogs.com/a/2335710/

2.http://mmz06.blog.163.com/blog/static/121416962011101103734767/

转载于:https://www.cnblogs.com/zeejun/archive/2012/07/22/2603329.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是用C++语言的实现代码: ```cpp #include <iostream> #include <fstream> #include <cstdlib> #include <algorithm> using namespace std; // 定义常量 const int SIZE = 20; const int SIZE1 = 10; // 定义排序函数 void sort(int a[], int n); int main() { int i, num[SIZE], read_num[SIZE1]; ofstream fout1("file1.dat", ios::out | ios::binary); ifstream fin1("file1.dat", ios::in | ios::binary); ofstream fout2("file2.dat", ios::out | ios::binary); ifstream fin2("file2.dat", ios::in | ios::binary); // 检查文件是否成功打开 if (!fout1 || !fin1 || !fout2 || !fin2) { cout << "无法打开文件!" << endl; exit(1); } // 从键盘输入20个随机数,将数存入到 file1.dat cout << "请输入20个随机数:" << endl; for (i = 0; i < SIZE; i++) { cin >> num[i]; fout1.write(reinterpret_cast<char*>(&num[i]), sizeof(int)); } // 定位文件指针到 file1.dat 的开头 fin1.seekg(0, ios::beg); // 从 file1.dat 读取前10个数,并按照从小到大的顺序存入到 file2.dat for (i = 0; i < SIZE1; i++) { fin1.read(reinterpret_cast<char*>(&read_num[i]), sizeof(int)); } sort(read_num, SIZE1); // 清空 file2.dat 文件 fout2.close(); fout2.open("file2.dat", ios::out | ios::binary); // 将排序后的前10个数存入到 file2.dat for (i = 0; i < SIZE1; i++) { fout2.write(reinterpret_cast<char*>(&read_num[i]), sizeof(int)); } // 定位文件指针到 file2.dat 的开头 fin2.seekg(0, ios::beg); // 从 file2.dat 读出数据并显示 cout << "\nfile2.dat 的数据为:" << endl; for (i = 0; i < SIZE1; i++) { fin2.read(reinterpret_cast<char*>(&read_num[i]), sizeof(int)); cout << read_num[i] << " "; } // 关闭文件 fout1.close(); fin1.close(); fout2.close(); fin2.close(); return 0; } // 排序函数 void sort(int a[], int n) { sort(a, a + n); } ``` 这个程序会在当前目录下生成 `file1.dat` 和 `file2.dat` 两个文件,并且按照从小到大的顺序将 `file1.dat` 前10个数存入到 `file2.dat` 。最后从 `file2.dat` 读出数据并显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值