กรกฎาคม 19, 2019, 03:21:38 am *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: สุ่มตัวเลขด้วย rand()  (อ่าน 12164 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« เมื่อ: สิงหาคม 07, 2010, 11:33:15 am »

สุ่มตัวเลขด้วย rand()

บ่อยครั้งที่โปรแกรมเมอร์ต้องการสุ่มตัวเลขใดๆออกมาเพื่อทำอะไรบางอย่าง ผู้พัฒนาภาษา Perl รับรู้ถึงสิ่งนี้ดี เลยได้ทำการสร้างฟังก์ชั่นที่ทำหน้าที่สุ่มตัวเลขไว้ใช้ใช้ได้ได้อย่างง่ายดาย ฟังชั่นนี้มีชื่อว่า rand()
ฟังก์ชั่น rand() จะสุ่มตัวเลขใดๆที่มีค่าอยู่ในช่วง 0 ถึง 1 แต่อย่างไรก็ตามเราสามารถกำหนดค่าสูงสุดให้กับ rand() ได้ และ rand() จะทำการสุ่มตัวเลขที่อยู่ในช่วง 0 ถึงค่าสูงสุดดังกล่าวออกมาให้ นอกจากนี้ยังทำการสุ่มค่าใดๆ ตามที่เราต้องการได้ โดยการเขียนโปรแกรมเพิ่มเติมอีกเล็กน้อย


ตัวอย่างที่ 1 สุ่มตัวเลขในช่วง 0-1
Code:
use strict;
use warnings;
my ($N, $i, $rand_val);
$N = 10;
for ($i=1; $i<$N; $i++) {
$rand_val = rand();
print "$rand_val\n";
}

ผลที่ได้:
Code:
0.27496337890625
0.20184326171875
0.173858642578125
0.360809326171875
0.908477783203125
0.187408447265625
0.341949462890625
0.132232666015625
0.815704345703125



ตัวอย่างที่ 2 สุ่มตัวเลขจาก 0-100
Code:
use strict;
use warnings;
my ($N, $i, $rand_val, $max_val);
$max_val = 100;
$N = 10;
for ($i=1; $i<$N; $i++) {
$rand_val = rand($max_val);
print "$rand_val\n";
}

ผลที่ได้:

Code:
37.34130859375
50.2838134765625
47.412109375
87.3626708984375
5.877685546875
88.104248046875
19.4732666015625
67.15087890625
20.977783203125



ตัวอย่างที่ 3 สุ่มตัวเลขจำนวนเต็ม
Code:
use strict;
use warnings;
my ($N, $i, $rand_val, $max_val);
$max_val = 100;
$N = 10;
for ($i=1; $i<$N; $i++) {
$rand_val = int(rand($max_val));
print "$rand_val\n";
}

ผลที่ได้:

Code:
46
97
14
4
98
31
29
64
57



ตัวอย่างที่ 4 สุ่มตัวเลขแบบกำหนดช่วงต่ำสุดและสูงสุด (50 ถึง 150)
Code:
use strict;
use warnings;
my ($N, $i, $rand_val, $max_val, $min_val);
$max_val = 100;
$min_val = 50;
$N = 10;
for ($i=1; $i<$N; $i++) {
$rand_val = int(rand($max_val))+$min_val;
print "$rand_val\n";
}

ผลที่ได้:
Code:
112
131
50
138
57
65
68
145
95



ฝากให้คิด: ถ้าต้องการสุ่มตัวเลข จาก 20 ถึง 50 ต้องเขียนโปรแกรมอย่างไร?
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
TheONE
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 14


| |
« ตอบ #1 เมื่อ: ธันวาคม 02, 2010, 05:26:22 pm »

ภาษา Perl ดูๆไปก็คล้ายกับภาษา C หรือเปล่าครับ?
อ่านมามีบางเว็บบอกว่าเป็นภาษาที่ง่าย เมื่อเทียบกับภาษา C ไม่ทราบว่าจริงหรือเปล่า?
ผมจะลองศึกษาดูบ้าง ไม่ทราบว่าต้องเริ่มจากตรงไหนดี ต้องใช้โปรแกรมอะไรบ้างครับ?
บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« ตอบ #2 เมื่อ: ธันวาคม 02, 2010, 09:43:22 pm »

อ้างถึง
ภาษา Perl ดูๆไปก็คล้ายกับภาษา C หรือเปล่าครับ?
ใช่ครับ Perl ถูกพัฒนามาจาก C แบบตรงๆเลยครับ หลังจากลงโปรแกรมแล้วลองเข้าไปดูใน C:/Perl/bin จะเห็น *.exe อยู่มากมาย *.exe เหล่านี้ถูกเขียนมาจาก C

อ้างถึง
อ่านมามีบางเว็บบอกว่าเป็นภาษาที่ง่าย เมื่อเทียบกับภาษา C ไม่ทราบว่าจริงหรือเปล่า?
จริงครับ โดยรวมง่ายกว่าหลายเท่าตัว การเลือกใช้ต้องพิจาณากันที่ Application

อ้างถึง
ผมจะลองศึกษาดูบ้าง ไม่ทราบว่าต้องเริ่มจากตรงไหนดี ต้องใช้โปรแกรมอะไรบ้างครับ?
เริ่มจากติดตั้งโปรแกรมครับ ถ้าเป็น Windows ผมของแนะนำ ActivePerl สำหรับ Linux น่าจะมาพร้อมกับตัว OS อยู่แล้ว ถ้าไม่มีก็สามารถติดตั้งได้เหมือนโปรแกรมอื่นๆครับ
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป: