c语言两个20位的随机数怎么放到数组里面
时间: 2024-09-11 16:17:19 浏览: 59
C语言计时和随机数的获取
在C语言中,如果你想将两个20位的随机数存储在一个数组里,首先需要确保数组足够大能够容纳这两个20位数值,并转换成适当的整数类型。因为C标准库提供的rand()函数生成的是32位的随机数,所以我们通常需要通过位运算将其限制到指定长度。
下面是一个简单的步骤示例:
1. 定义一个能容纳40位(两个20位)的整数类型的数组,比如`unsigned long long int`,它有64位,可以放两个20位数。
```c
unsigned long long int arr[2];
```
2. 使用位运算截取并组合两个随机数。假设你已经得到了两个独立的32位随机数(如`int a`和`int b`),你可以这样做:
```c
int random_1 = rand(); // 随机数a
int random_2 = rand(); // 随机数b
// 将两个随机数左移12位(32 - 20)并按位或(|)操作
arr[0] = (random_1 << 12) | (random_2 & 0xFFF); // 第一个20位
arr[1] = (random_2 >> 12); // 第二个20位,注意不需要左移,因为它已放置在最右边
// 如果你想得到无符号的20位随机数,可以先对每个数做无符号右移32位(相当于除以2^32)
// 然后再左移12位,例如:arr[0] = ((unsigned int)random_1) >> 20;
```
阅读全文