c语言两个20位的随机数怎么放到数组里面
时间: 2024-09-11 15:17:19 浏览: 21
在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;
```
相关问题
c语言随机生成10个两位数存入数组中
可以使用C语言中的rand()函数和srand()函数来生成随机数,并将其存入数组中。
下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int nums[10];
int i;
srand(time(NULL)); // 初始化随机数种子
for (i = 0; i < 10; i++) {
nums[i] = rand() % 90 + 10; // 生成10 ~ 99之间的随机数
printf("%d ", nums[i]); // 输出生成的随机数
}
return 0;
}
```
其中,srand()函数用于初始化随机数种子,需要传入一个参数,通常使用当前时间作为种子,以保证每次运行程序时生成的随机数不同。rand()函数用于生成随机数,它会返回一个在0到RAND_MAX之间的整数,因此需要使用取余运算符(%)将其限制在10到99之间。循环10次,将生成的随机数存入数组中,并输出到屏幕上。
用c语言输出两个随机的数组
以下是一个示例代码,可以输出两个长度为10的随机数组:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int arr1[10], arr2[10];
int i;
// 设置随机数种子
srand(time(NULL));
printf("Array 1: ");
for (i = 0; i < 10; i++) {
arr1[i] = rand() % 100; // 生成 0~99 的随机数
printf("%d ", arr1[i]);
}
printf("\nArray 2: ");
for (i = 0; i < 10; i++) {
arr2[i] = rand() % 100; // 生成 0~99 的随机数
printf("%d ", arr2[i]);
}
return 0;
}
```
运行结果可能如下:
```
Array 1: 40 94 26 74 72 22 29 40 68 70
Array 2: 81 87 94 9 39 90 36 80 75 89
```