在10X10的矩阵中随机取10个数,其中5以下的概率为10% 要均匀分布的取值 c语言编程
时间: 2024-10-17 13:09:21 浏览: 28
为了在10x10的矩阵中随机选取10个数,其中5以下的概率为10%,你可以使用C语言的`<stdlib.h>`库中的`rand()`函数以及`<time.h>`库中的`srand()`和`clock()`函数来生成随机数,并结合条件判断来控制选取的数字范围。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MATRIX_SIZE 10
void random_matrix(int matrix[MATRIX_SIZE][MATRIX_SIZE], int count) {
srand(time(0)); // 设置随机种子以保证每次运行结果不同
for (int i = 0; i < count; ++i) {
int row = rand() % MATRIX_SIZE;
int col = rand() % MATRIX_SIZE;
while (matrix[row][col] == -1) { // 确保选择的元素未被占用
row = rand() % MATRIX_SIZE;
col = rand() % MATRIX_SIZE;
}
matrix[row][col] = (rand() * 100 < 50) ? rand() : 5 + rand(); // 5以下的概率为10%
}
}
// 打印矩阵
void print_matrix(int matrix[MATRIX_SIZE][MATRIX_SIZE]) {
for (int i = 0; i < MATRIX_SIZE; ++i) {
for (int j = 0; j < MATRIX_SIZE; ++j) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
int matrix[MATRIX_SIZE][MATRIX_SIZE] = {-1}; // 初始化所有位置为-1,表示空位
int selected_count = 10;
random_matrix(matrix, selected_count);
print_matrix(matrix);
return 0;
}
```
在这个程序中,我们首先初始化了一个10x10的矩阵,并将其所有位置设为-1,表示待填充的位置。然后,`random_matrix`函数会随机选择矩阵中的位置,如果该位置已经被填过,则继续尝试直到找到一个空位置。当选择到一个位置时,我们会生成一个随机数,如果这个随机数小于等于50(即概率为10%),则生成另一个随机数作为实际数值;否则,直接赋予数值5加上随机数。
最后,`print_matrix`函数用于打印出生成的矩阵。
阅读全文