Results 1 to 9 of 9

Thread: ขอถามเรื่อง Random เลข ใน C ครับ

  1. #1
    Junior Member
    Join Date
    May 2007
    Location
    Thailand
    Posts
    1


    เอ่อ Admin ที่เคารพครับ

    ช่วยลบกระทู้ทีนะครับ

    พอดีว่า
    ผมเจอวิธีแล้วอ่าครับ

    ขอโทษด้วยนะครับที่รบกวน

    วิธีคือ

    [code]#include <time.h>
    #include <stdlib.h>
    main()
    {
    [SIZE=2]ใครช่างใจร้ายใจดำ ทำกับฉันได้ !!![/SIZE]

  2. #2
    Junior Member
    Join Date
    Nov 2006
    Posts
    27


    ผมเคยอ่านหนังสือ สามารถใช้คณิตศาสตร์พิสูจน์ได้ ว่า เราไม่มีทางที่จะสุ่มตัวเลขแบบ ที่เป็น random อย่างแท้จริงได้

    คำสั่ง srand แค่ทำการขยายอนุกรมของการสุ่ม ให้กว้างขึ้น

    บทพิสูจน์ ผมจำไม่ได้ ...ถ้าหาได้เดี๋ยวเอามาลงครับ


  3. #3
    Administrator asylu3's Avatar
    Join Date
    Jun 2000
    Location
    Thailand
    Posts
    3,557


    เปลี่ยนเป็นไม่ลบนะครับแต่ขอวิธีการที่คุณเจอมาแบ่งปันให้คนอื่นทราบด้วยนะครับ

  4. #4
    Senior Member
    Join Date
    Jul 2004
    Location
    Bangkok
    Posts
    187


    srand -> กำหนดค่า seed เริ่มต้นให้ function rand ซึ่งโดยปกติจะมีค่าเริ่มต้นเหมือนกันทุกครั้งเพราะอยู่ใน library แต่ถ้าอยากให้โปรแกรมสุ่มค่าออกมาไม่เหมือนกันก็ ต้องใช้คำสั่ง ตามข้างต้น ^^

    ถ้าจะอยากให้สุ่มค่าได้ไม่ซ้ำกัน ขอตอบว่า อาจจะต้องสร้าง array มาเก็บค่าที่เคยสุ่มไว้แล้ว ถ้าซ้ำก็สุ่มใหม่ หรือ

    ใช้หลักการ Number Theory โดยอาศัยเลขจำนวนเฉพาะ เข้ามาทำการคำนวณ แต่มันก็จะ สุ่ม ได้แต่ 0 ถึง p -1 (ให้ p เป็นจำเฉพาะ) โดยการสุ่มทั้งหมด p ครั้ง จะได้ค่าไม่ซ้ำกัน พอซุ่มรอบใหม่ จะได้ sequence เดิม ต้องทำการเปลี่ยนค่า ตัวคุณ เพื่อจะทำให้ sequence ออกมาไม่เหมือนเดิม แต่ยังคงลักษณะ การสุ่ม p ครั้ง ที่ได้เลขไม่ซ้ำกัน

    [code]

  5. #5
    Junior Member
    Join Date
    Mar 2007
    Posts
    15




    การ random ด้วยฟังก์ชัน rand นั้น เกิดนำตัวเลขที่เกิดจากฟังก์ชัน randomize มาใช้ ดังนั้นก่อนเรียก rand ใหม่ ต้องเรียก randomize ก่อนทุกครั้ง ตัวเลขจะเกิดจากการนำจำนวนเศษเสี้ยววินาที เริ่มนับ 0 จากวันที่ 1 มกราคม 1970 จนถึงเ้วลาของคอมพิวเตอร์นะขณะนั้นมาเป็นตัวเลขครับ

  6. #6
    Senior Member
    Join Date
    Jul 2004
    Location
    Bangkok
    Posts
    187


    การ random ด้วยฟังก์ชัน rand นั้น เกิดนำตัวเลขที่เกิดจากฟังก์ชัน randomize มาใช้ ดังนั้นก่อนเรียก rand ใหม่ ต้องเรียก randomize ก่อนทุกครั้ง ตัวเลขจะเกิดจากการนำจำนวนเศษเสี้ยววินาที เริ่มนับ 0 จากวันที่ 1 มกราคม 1970 จนถึงเ้วลาของคอมพิวเตอร์นะขณะนั้นมาเป็นตัวเลขครับ
    [/b]
    ไม่ถูกนะครับ ถ้าเป็นแบบนั้น เวลาเรียก rand ติดๆกันจะได้ต้องได้ค่าเท่ากัน ไม่ใช่เพราะว่า เสี้ยววินาทีมันไม่ตรงกัน

    มีเป็น Theory เลยว่าจะ สร้าง function random ยังไง ถึงค่าที่ได้จะออกมา random จริงๆ แต่โดยหลักการพื้นฐานง่ายๆ คือต้องการค่าเริ่มต้น (Seed)

  7. #7
    Junior Member
    Join Date
    Apr 2008
    Posts
    16


    ใช้แค่ random() function ก้อพอครับ
    วิธีใช้ก้อ int random (int n);
    หรือ y = random(100);
    หากยังมีปัญหาเพราะ ใช้ติดๆกัน ผมว่าลอง ใช้ sleep() functionดูครับ
    แต่ต้องเติม #include <unistd.h> ก่อนนะครับ
    น่าจะช่วยได้

  8. #8


    ปกติผมใช้ randomize();
    และ random(10);

    ---------------------------
    srand(time(NULL));
    rand()%10+1;

    2 แบบนี้ มันต่างกันมากมั้ยครับ??

  9. #9
    Junior Member
    Join Date
    May 2007
    Location
    Thailand
    Posts
    1


    ไม่ต่างครับ

    randomize() มันอยู่ใน Turbo C อ่ะครับ

    แต่ srand() มันอยู่ใน ANSI C 90 Standard Library ครับ stdlib.h อ่ะ

    หวังว่าตอนนี้คงเข้าใจกันแล้วนะครับ
    [SIZE=2]ใครช่างใจร้ายใจดำ ทำกับฉันได้ !!![/SIZE]

Similar Threads

  1. ขอถามเรื่อง wireless
    By felasia in forum Ethical Hacking for Padawan
    Replies: 3
    Last Post: 30-08-2010, 01:13 PM
  2. ขอถามเรื่อง Cain&Abel
    By up4u in forum Ethical Hacking for Padawan
    Replies: 4
    Last Post: 23-08-2010, 03:58 PM
  3. Replies: 3
    Last Post: 05-10-2007, 01:23 AM
  4. Replies: 0
    Last Post: 20-05-2007, 10:12 PM
  5. Replies: 0
    Last Post: 15-09-2004, 03:58 PM

Members who have read this thread : 0

Actions : (View-Readers)

There are no names to display.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •