吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 600|回复: 4
收起左侧

[学习记录] 生成随机数,并线程排序

[复制链接]
ExistentStarts 发表于 2023-12-16 21:58
使用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以表示程序正常结束。
[C] 纯文本查看 复制代码
#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[i] = 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[i]);
    }

    free(array);
    return 0;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

CQGaxm 发表于 2023-12-17 06:50
学习学习,感谢分享
FruitBaby 发表于 2023-12-17 10:19
冥界3大法王 发表于 2023-12-17 10:37
返回值:返回一个扩展类型的随机数。
单元: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[I]:=random(10);
    showmessage(floattostr(Num[i]));
  end;
end;procedure TForm1.Button1Click(Sender: TObject);
Var I:integer;
   Num:array[0..6] of integer;


示例1
MyRandom:=RandomFrom(num);
执行该语句后,MyRandom变量随机地得到Num 数组中的一个值。
&#61496;  示例2
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Randomize;
  Edit1.text:=RandomFrom(['a1', 'a2', 'a3', 'a4']);
end;


利用随机数在题库中随机地抽出一道试题作为考题,供考生作答,具体应用如下。
procedure TForm1.Button1lick(Sender: TObject);
var
  exam :array[0..4] of string;
  s:string;
begin
   exam[0]:='请写出二叉树的中序遍历过程(非递归)';
   exam[1]:='请写出二叉树的先序遍历过程(非递归)';
   exam[2]:='请写出二叉树的后序遍历过程(非递归)';
   exam[3]:='请写出二叉树与森林的转换过程';
   exam[4]:='请写出图的广度遍历过程';
   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的代码看着整洁舒服啊。

MarioCrane 发表于 2023-12-17 15:26
冥界3大法王 发表于 2023-12-17 10:37
返回值:返回一个扩展类型的随机数。
单元:Math。
示例 :

begin end不觉得难受吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-17 03:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表