ไฟล์ส่วนหัว:
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) สิ่งนี้ยังคงอาจสร้างลำดับเดียวกันหากคุณเรียกใช้โปรแกรมในวินาทีเดียวกัน
#รวม
#รวม
#รวม
intหลัก()
{
intผม;
srand ( เวลา (0));
printf ('10 ตัวเลขสุ่มระหว่าง 1 ถึง 10=>NS');
สำหรับ(ผม=0;ผม<10;ผม++)
{
printf ('%NS ',( แถว () %10) + 1);
}
printf ('NS');
กลับ 0;
}
ใน Example3.c เราได้เห็นแล้วว่าสามารถสร้างตัวเลขสุ่มระหว่าง 1 ถึง 10 ได้อย่างไร
#รวม
#รวม
#รวม
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
#รวม
#รวม
#รวม
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)
#รวม
#รวม
#รวม
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 แต่ดีพอสำหรับการใช้งานทั่วไป