Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 17 kết quả

Đề tài: Sinh số ngẫu nhiên trong phạm vi tùy ý

  1. #1
    Ngày gia nhập
    10 2007
    Nơi ở
    Hà nội
    Bài viết
    2

    Mặc định Sinh số ngẫu nhiên trong phạm vi tùy ý

    Mình muốn sinh một dãy số ngẫu nhiên nằm trong phạm vi [m,n] tùy ý nhưng không biết làm thế nào cả vì trong C chỉ có hàm rand() thôi chứ không có hàm random như trong Pascal. Huhu. Bác nào biết xin chỉ dùm em? Thanks a lot!

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà Nội
    Bài viết
    361

    thế thì sao ?? ví dụ sinh số từ 0 đến 7 thì nhân 7 lần số rand lên . Nếu thích lấy số nguyên thì làm tròn là được . Giả sử thích lấy số thực từ 5 -> 10 thì .
    rand()*5+5 .
    Code C quên mất tiêu rồi , chỉ giúp được đến thế thôi
    Blog tổng quan kiến thức về viễn thông : http://tongquanvienthong.blogspot.com/

    mSPDict từ điển android hỗ trợ liên kết tra trên các trình đọc sách điện tử và tra sách giấy thông qua camera
    http://www.tinhte.vn/threads/691731/

  3. #3
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Để sinh ngẫu nhiên số trong C trước hết bạn cần hàm randomize(); để khởi tạo bộ số ngẫu nhiên . Hàm này rất quan trọng vì ko có nó thì máy sẽ sinh ra có 1 bộ số ngẫu nhiên hoài mà thôi . Sau đó gọi hàm random(x); để sinh 1 số ngẫu nhiên trong đoạn [0,x-1] . Nếu bạn muốn số ngẫu nhiên ấy trong đoạn [m,n] thì bạn cộng cho hàm random(x) 1 số m sao cho x+m =n+1 . Tức là x=n+1-m . khi đó hàm random(x)+m sẽ cho ra 1 số trong đoạn [m,n] .
    Đã được chỉnh sửa lần cuối bởi sieuphuong : 31-01-2008 lúc 03:32 PM.

  4. #4
    Ngày gia nhập
    07 2007
    Nơi ở
    TP HCM
    Bài viết
    6

    hàm randomize() hình như là của vb mà?
    trong C++ thì hàm khởi tạo bộ tạo số ngẫu nhiên là srand(<value>)

  5. #5
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    Sinh iRandom trong phạm vi [m,n]
    PHP Code:
    srand((unsigned)time(NULL));
    int iRandom rand() % m

  6. #6
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    360

    Mặc định Sinh số ngẫu nhiên trong phạm vi tùy ý

    Hàm rand() của C chỉ cho một số nguyên giả ngẫu nhiên trong khoảng [0,RAND_MAX] và các số sinh ra sẽ lặp lại với chu kỳ khoảng RAND_MAX/2.

    Bạn có thể dùng rand() để sinh một số nguyên giả ngẫu nhiên trong khoảng [m,n] có độ dài không lớn hơn độ dài của khoảng [0,RAND_MAX] và có chu kỳ giống như trường hợp trên. Nếu bạn cần khoảng rộng hơn hay chu kỳ dài hơn thì không thể dùng rand() được.

  7. #7
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    360

    Trích dẫn Nguyên bản được gửi bởi void main () Xem bài viết
    Sinh iRandom trong phạm vi [m,n]
    PHP Code:
    srand((unsigned)time(NULL));
    int iRandom rand() % m
    Không đơn giản như thế đâu. Các giá trị rand() phân bố đều trong khoảng [0,RAND_MAX], nhưng rand() % n sẽ không nhất thiết phân bố đều trong khoảng [0,n-1] với mọi n <= RAND_MAX+1.
    Đã được chỉnh sửa lần cuối bởi Ada : 31-01-2008 lúc 05:55 PM. Lý do: Edit 1

  8. #8
    Ngày gia nhập
    10 2007
    Nơi ở
    Hà nội
    Bài viết
    2

    Cảm ơn các bác nhiều. Cách của em sinh số ngẫu nhiên trong khoảng [m,n] là x=rand()%(n-m)+m. Nói chung cách này em chưa ưng ý lắm nhưng chưa có cách khác. Còn về hàm srand() và randomize() thì cả hai hàm này đều có trong C và đều có chức năng khởi tạo bộ số ngẫu nhiên. Tuy nhiên hàm srand() sẽ khởi tạo từ một giá trị cho trước còn randomize khởi tạo từ một giá trị ngẫu nhiên. randomize() sử dụng hàm time trong thư viện time.h. Nhưng không hiểu sao khi gọi hàm này trong VC++ 6.0 lại không được.hichic

  9. #9
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    360

    Trích dẫn Nguyên bản được gửi bởi dinhha Xem bài viết
    x=rand()%(n-m)+m
    Bạn hãy test nó theo cách này xem nhé:

    Sinh một loạt số x trong khoảng [0,MAX], thống kê số lần xảy ra biến cố
    x == MAX và số lần xảy ra biến cố x == MAX - 1.

    Hãy thử với 2 trường hợp MAX == 1 và MAX == 0x40000000.

  10. #10
    Ngày gia nhập
    08 2009
    Bài viết
    6

    Trích dẫn Nguyên bản được gửi bởi dinhha Xem bài viết
    Cách của em sinh số ngẫu nhiên trong khoảng [m,n] là x=rand()%(n-m)+m.
    srand(time(NULL));
    x=rand()%(n-m+1)+m;

    các bạn cho mình hỏi làm thế nào để chọn ra 1 số ngẫu nhiên từ 1 tập hợp cho sẵn
    ví dụ như chọn ngẫu nhiên 1 chữ cái từ 4 chữ cái (S,H,D,C)
    Đã được chỉnh sửa lần cuối bởi giahung : 02-08-2009 lúc 10:43 PM. Lý do: sai chính tả

Các đề tài tương tự

  1. Bài tập C chương trình sinh số ngẫu nhiên và thống kê tần số xuất hiện trong C
    Gửi bởi lion5893 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 27-08-2013, 07:01 PM
  2. Cách phát sinh dữ liệu ngẫu nhiên trong dsách lkết đơn?
    Gửi bởi Teppione trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 23-02-2013, 04:00 PM
  3. Lập trình C Tạo mảng 2 chiều bằng cách phát sinh phần tử ngẩu nhiên và không trùng.
    Gửi bởi trungnguyenkbuor trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 28-12-2012, 10:36 AM
  4. Lập trình C++ Phát sinh số ngẫu nhiên không lặp lại trong ma trận
    Gửi bởi hugo158 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 20-05-2011, 07:57 AM
  5. Bài tập C Tạo ngẫu nhiên mảng 2 chiều vuông 4X4 với các phần tử tạo ngẫu nhiên trong đoạn[0,50]
    Gửi bởi truongtrungviet trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 16-04-2011, 08:06 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn