用c写一个函数,生成256位、64位、42位、16位四个16进制随机数的函数并且不使用printf,别的函数会调用他们的值
时间: 2023-11-28 21:48:31 浏览: 27
JAVA 16位ID生成工具类含16位不重复的随机数数字+大小写
以下是生成指定位数的16进制随机数的函数:
```c
#include <stdlib.h>
#include <time.h>
char *generate_hex(int num_bits)
{
char *hex_string = (char *) malloc((num_bits/4 + 1) * sizeof(char));
int i;
static const char hex_digits[] = "0123456789abcdef";
srand(time(NULL)); // Initialize random seed
for(i = 0; i < num_bits/4; i++) {
int rand_num = rand() % 16;
hex_string[i] = hex_digits[rand_num];
}
hex_string[num_bits/4] = '\0'; // Add null terminator
return hex_string;
}
```
说明:
- 参数 `num_bits` 指定生成的随机数位数,以比特为单位。
- 函数返回值是一个指向 char 类型的字符串,其中存储了生成的随机数的16进制表示。
- 函数内部使用了标准库中的 `rand()` 函数来生成随机数。为了避免每次生成相同的随机数序列,我们在函数内部使用 `srand()` 函数来初始化随机数种子。这里我们使用了当前时间作为随机数种子。
以下是调用该函数生成四个指定位数的随机数的示例:
```c
#include <stdio.h>
int main()
{
char *random_256 = generate_hex(256);
char *random_64 = generate_hex(64);
char *random_42 = generate_hex(42);
char *random_16 = generate_hex(16);
// Do something with the random numbers
// ...
free(random_256);
free(random_64);
free(random_42);
free(random_16);
return 0;
}
```
注意,在使用完返回的随机数字符串后,需要手动调用 `free()` 函数来释放内存。
阅读全文