rand() ฟังก์ชั่นในภาษาซี

Rand Function C Language



ในภาษาซี แถว() ฟังก์ชันใช้สำหรับ เครื่องกำเนิดตัวเลขหลอก (PRNG) . ตัวเลขสุ่มที่สร้างโดยฟังก์ชัน rand() ไม่ใช่การสุ่มอย่างแท้จริง มันเป็นลำดับที่ทำซ้ำเป็นระยะ ๆ แต่ช่วงเวลานั้นใหญ่มากจนเราไม่สามารถละเลยได้ NS แถว() ฟังก์ชันทำงานโดยจดจำค่าเมล็ดพันธุ์ที่ใช้คำนวณตัวเลขสุ่มตัวถัดไปและค่าเมล็ดพันธุ์ใหม่ตัวถัดไป ในบทความนี้ เราจะพูดถึงรายละเอียดเกี่ยวกับวิธีการสร้างตัวเลขสุ่มโดยใช้ แถว() การทำงาน. เริ่มกันเลย!

ไฟล์ส่วนหัว:

stdlib.h







ไวยากรณ์:

int rand (เป็นโมฆะ)



ส่งกลับค่า:

ฟังก์ชันนี้จะคืนค่าตัวเลขสุ่มหลอกตัวถัดไปในอนุกรม ค่าช่วงของชุดตัวเลขอยู่ระหว่าง 0 ถึง RAND_MAX RAND_MAX เป็นมาโครที่กำหนดไว้ใน stdlib.h ไฟล์ส่วนหัวที่มีค่าเป็นค่าสูงสุดซึ่งสามารถส่งคืนได้โดยฟังก์ชัน rand() ค่าของ RAND_MAX มากกว่าแต่ไม่น้อยกว่า 32767 ขึ้นอยู่กับไลบรารี C



//Example1.c

#รวม
#รวม

intหลัก()
{

intผม;

printf ('10 ตัวเลขสุ่ม =>NS');

สำหรับ(ผม=0;ผม<10;ผม++)
{
printf ('%NS ', แถว ());
}

printf ('NS');
กลับ 0;
}


ใน Example1.c เราเรียกใช้ฟังก์ชัน rand() ในการวนซ้ำแต่ละครั้งของ for loop และพิมพ์ค่าส่งคืนของฟังก์ชัน ลำดับค่าของฟังก์ชัน rand() จะเหมือนกันทุกครั้งที่เรารันโปรแกรม โดยค่าเริ่มต้น ฟังก์ชัน seed ของ rand จะถูกตั้งค่าเป็น 1





เราสามารถตั้งค่าเมล็ดสำหรับฟังก์ชัน rand โดยใช้ srand() การทำงาน. เมล็ดสามารถตั้งได้เพียงครั้งเดียวและก่อนครั้งแรก แถว() เรียกใช้ฟังก์ชัน

sran() ฟังก์ชั่น:

ไฟล์ส่วนหัว:

stdlib.h



ไวยากรณ์:

int srand (เมล็ด int ที่ไม่ได้ลงนาม)

อาร์กิวเมนต์:

ฟังก์ชันนี้รับ 1 อาร์กิวเมนต์

เมล็ดพันธุ์: ค่าจำนวนเต็มที่ใช้เป็นเมล็ดพันธุ์สำหรับชุดตัวเลขสุ่มหลอกชุดใหม่

ส่งกลับค่า:

ไม่มี

//Example2.c

#รวม
#รวม
#รวม

intหลัก()
{

intผม;

srand ( เวลา (0));

printf ('10 ตัวเลขสุ่ม =>NS');

สำหรับ(ผม=0;ผม<10;ผม++)
{
printf ('%NS ', แถว ());
}

printf ('NS');
กลับ 0;
}


ใน Example2.c เราได้ใช้ฟังก์ชัน srand() เพื่อตั้งค่าเมล็ดเริ่มต้นของลำดับตัวเลขสุ่มที่สร้างโดยฟังก์ชัน rand() ทุกครั้งที่รันโปรแกรม ลำดับที่แตกต่างกันจะถูกสร้างขึ้น ในฟังก์ชัน srand(), time(0) (ประกาศใน เวลา.h ไฟล์ส่วนหัว) ใช้เป็นเมล็ดพันธุ์ ฟังก์ชัน time(0) นี้จะคืนค่าจำนวนวินาทีที่ผ่านไปนับตั้งแต่ยุค (00:00:00 น. 1 มกราคม 1970) สิ่งนี้ยังคงอาจสร้างลำดับเดียวกันหากคุณเรียกใช้โปรแกรมในวินาทีเดียวกัน

//Example3.c

#รวม
#รวม
#รวม

intหลัก()
{

intผม;

srand ( เวลา (0));

printf ('10 ตัวเลขสุ่มระหว่าง 1 ถึง 10=>NS');

สำหรับ(ผม=0;ผม<10;ผม++)
{
printf ('%NS ',( แถว () %10) + 1);
}

printf ('NS');
กลับ 0;
}


ใน Example3.c เราได้เห็นแล้วว่าสามารถสร้างตัวเลขสุ่มระหว่าง 1 ถึง 10 ได้อย่างไร

//Example4.c

#รวม
#รวม
#รวม

intหลัก()
{

intผม,max,นาที;

printf ('ป้อนค่าต่ำสุด => ');
scanf ('%NS', &นาที);
printf ('ป้อนค่าสูงสุด => ');
scanf ('%NS', &max);

ถ้า(นาที>max)
{
printf ('ค่าต่ำสุดมากกว่าค่าสูงสุดNS');
กลับ 0;
}

srand ( เวลา (0));


printf ('10 ตัวเลขสุ่มระหว่าง %d และ %d=>NS',นาที,max);

สำหรับ(ผม=0;ผม<10;ผม++)
{
printf ('%NS ',( แถว () % (max-นาที+1)) +นาที);
}

printf ('NS');
กลับ 0;
}


ใน Example4.c เราได้นำช่วงจากผู้ใช้และสร้างตัวเลขสุ่มภายในช่วงนี้ สูตรคือ: rand ()% (สูงสุด - นาที +1)) + min

//Example5.c

#รวม
#รวม
#รวม

intหลัก()
{

intผม;

srand ( เวลา (0));

printf ('10 ตัวเลขสุ่มระหว่าง 0.0 ถึง 1.0=>NS');

สำหรับ(ผม=0;ผม<10;ผม++)
{
printf ('%NS ',((ลอย) แถว () /RAND_MAX));
}

printf ('NS');
กลับ 0;
}


ใน Example5.c เราได้เห็นวิธีที่เราสามารถสร้างตัวเลขสุ่มระหว่าง float 0.0 ถึง 1.0 สูตรคือ: (ลอย)แรนด์() /RAND_MAX)

//Example6.c

#รวม
#รวม
#รวม

intหลัก()
{

intผม;
ลอยmax,นาที;

printf ('ป้อนค่าต่ำสุด => ');
scanf ('%NS', &นาที);
printf ('ป้อนค่าสูงสุด => ');
scanf ('%NS', &max);

ถ้า(นาที>max)
{
printf ('ค่าต่ำสุดมากกว่าค่าสูงสุดNS');
กลับ 0;
}

srand ( เวลา (0));

printf ('10 ตัวเลขสุ่มระหว่าง %f และ %f =>NS',นาที,max);

สำหรับ(ผม=0;ผม<10;ผม++)
{
printf ('%NS ',นาที+ ((ลอย) แถว () /(RAND_MAX/(max-นาที))));
}

printf ('NS');
กลับ 0;
}


ใน Example6.c เราได้นำช่วงจากผู้ใช้และสร้างตัวเลขสุ่มภายในช่วงนี้ (รวมทั้งสองอย่าง) สูตรคือ: ขั้นต่ำ + ((ลอย)rand() /(RAND_MAX/(สูงสุด – นาที)))

บทสรุป:

ในบทความนี้ เราได้เรียนรู้วิธีสร้างตัวเลขสุ่มโดยใช้ แถว() และ srand() การทำงาน. ไม่มีการรับประกันเกี่ยวกับคุณภาพของตัวเลขสุ่มที่สร้างโดยฟังก์ชัน rand แต่ดีพอสำหรับการใช้งานทั่วไป