生成随机数,并线程排序
使用pthread_create()函数创建一个新线程,在该线程中对数组进行排序需要将数组作为参数传递给子线程,因此需要使用(void*)类型将数组强制转换为void*类型。使用了pthread_join()函数等待线程结束,并检查是否成功。
最后,释放动态分配的数组,结束程序。
在main函数中,首先使用srand()函数设置随机数生成器的种子,以保证每次运行时生成的随机数序列不同。
动态分配一个大小为NUM的整型数组array,用于保存生成的随机数。
使用for循环生成NUM个随机数,将其保存到数组array中。
创建一个新线程th,并调用pthread_create()函数来执行sort函数。sort函数将被作为线程的入口点,对数组array进行排序。
使用pthread_join()函数等待线程th结束。这样可以确保在主线程继续执行之前,子线程已经完成了排序任务。
使用for循环遍历数组array,打印出排序后的结果。
最后,释放动态分配的数组内存,返回0以表示程序正常结束。#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM 10000000
int cmp(const void* a, const void* b){
return *(int*)a - *(int*)b;
}
void* sort(void* arg){
int* array = (int*)arg;
qsort(array, NUM, sizeof(int), cmp);
return NULL;
}
int main(){
srand((unsigned int)time(NULL));
int* array = (int*)malloc(sizeof(int) * NUM);
for (int i = 0; i < NUM; i++){
array = rand();
}
pthread_t th;
pthread_create(&th, NULL, sort, (void*)array);
pthread_join(th, NULL);
for (int i = 0; i < NUM; i++){
printf("%d\n", array);
}
free(array);
return 0;
} 学习学习,感谢分享 一条线程生成随机数,另一条进行排序是吧 返回值:返回一个扩展类型的随机数。
单元:Math。
示例 :
RandG(2.5,0.001);
示例2
procedure TForm1.Timer1Timer(Sender: TObject);
var
i:integer;
begin
i:=0;
while i=0 do
begin
Randomize;
i:=random(1000)//随机数在1000以内
end;
Edit1.Text:=inttostr(i);
if Edit1.Text=inttostr(100) then
begin
showmessage('随机数为:'+Edit1.Text);
Timer1.Enabled:=False;
end;
end;
Delphi
函数参考大全
156
Begin
Randomize;
For I:=0 to 6 do
begin
Num:=random(10);
showmessage(floattostr(Num));
end;
end;procedure TForm1.Button1Click(Sender: TObject);
Var I:integer;
Num:array of integer;
示例1
MyRandom:=RandomFrom(num);
执行该语句后,MyRandom变量随机地得到Num 数组中的一个值。
示例2
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Randomize;
Edit1.text:=RandomFrom(['a1', 'a2', 'a3', 'a4']);
end;
利用随机数在题库中随机地抽出一道试题作为考题,供考生作答,具体应用如下。
procedure TForm1.Button1lick(Sender: TObject);
var
exam :array of string;
s:string;
begin
exam:='请写出二叉树的中序遍历过程(非递归)';
exam:='请写出二叉树的先序遍历过程(非递归)';
exam:='请写出二叉树的后序遍历过程(非递归)';
exam:='请写出二叉树与森林的转换过程';
exam:='请写出图的广度遍历过程';
randomize;
s:=randomFrom(exam);
caption:=s;
end;
示例
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Randomize;
Edit1.Text:=inttostr(Random(90));
end;
示例
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Randomize;
Edit1.Text:=inttostr(Random(90));
end;
a1:=RandomRange(20,50)
procedure TForm1.Timer3Timer(Sender: TObject);
var
RandSeed:Longint;
begin
Edit4.Text:=inttostr(RandSeed);
end;
还是咱们Delphi的代码看着整洁舒服啊。{:301_1006:}
冥界3大法王 发表于 2023-12-17 10:37
返回值:返回一个扩展类型的随机数。
单元:Math。
示例 :
begin end不觉得难受吗?
页:
[1]