Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Lập trình C++ | Tạo số ngẫu nhiên thực

  1. #1
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,749

    Mặc định Lập trình C++ | Tạo số ngẫu nhiên thực

    Sử dụng C++

    Tôi sử dụng 3 Function để tạo và trả về số ngẫu nhiên thực. Nó cho ra nhiều số ngẫu nhiên hơn bình thường.

    Các file .h cần đưa vào

    C++ Code:
    1. #include <iostream>
    2. #include <windows.h>
    3. #include <vector>
    4. #include <boost/lexical_cast.hpp>[/php]
    5. Function đầu tiên này sẽ lấy vào một số cao nhất bạn muốn cho nó tạo ra, sau đó trả về số ngẫu nhiên ở dạng Integer
    6.  
    7. [php]int RandomIntAsInt(int UpperBound)
    8. {
    9.     UpperBound++;
    10.     srand(GetTickCount());
    11.     int random;
    12.     random = rand()%UpperBound;
    13.     return random;
    14.  
    15. }
    Function tiếp theo này sẽ lấy vào một số Integer và trả về một chuỗi các số ngẫu nhiên, để giữ lại cho bạn cái công việc chuyển đổi

    C++ Code:
    1. string RandomIntAsString(int UpperBound)
    2. {
    3.     UpperBound++;
    4.     srand(GetTickCount());
    5.     int random;
    6.     random = rand()%UpperBound;
    7.     string total = "";
    8.     total = boost::lexical_cast<std::string>(random);
    9.     return total;
    10. }
    Function cuối cùng sẽ lấy vào một số lớn nhất bạn muốn lấy và lượng số ngẫu nhiên bạn muốn tạo ta. Nó sẽ trả về một chuỗi số ngẫu nhiên các nhau bởi các khoảng trống

    C++ Code:
    1. string RandomNumbersString(int UpperBound, int TotalNumbers)
    2. {
    3.  
    4.     srand(GetTickCount());
    5.     int loop = 0;
    6.     vector<int> random(TotalNumbers);
    7.     int N = 0;
    8.     for(loop = 0; loop < TotalNumbers; loop++){
    9.         random[N] = rand()%UpperBound;
    10.         N++;
    11.     }
    12.     string temp = "";
    13.     string total = "";
    14.     int stringloop;
    15.     temp = boost::lexical_cast<std::string>(random[0]);
    16.     total = total + temp;
    17.     N = 1;
    18.     --TotalNumbers;
    19.     for(stringloop = 0; stringloop < TotalNumbers; stringloop++){
    20.         temp = boost::lexical_cast<std::string>(random[N]);
    21.         total = total + " " + temp;
    22.         N++;
    23.     }
    24.     return total;
    Bài sưu tầm, nếu có gì không hiểu thì có thể thảo luận tại đây!
    Chúc may mắn!

  2. #2
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    218

    Mình thấy cái thứ 3 là tiện nhất, làm một lần ra luôn được. Nhưng không biết liệu mấy hàm này có cho ra được số ngẫu nhiên thật không ? Nghĩa là tần suất ra của các số là xấp xỉ nhau

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

    Hiện mình cần làm 1 bài về ngẫu nhiên in ra màn hình 1 ký tự nào đấy mình chưa biết dùng hàm Random làm ơn chỉ cách dùng hàm Random cho mình và cho 1 ví dụ đơn giản để dễ hiểu Thanks

  4. #4
    No Avatar
    POF_power.of.faith Khách

    Hàm random(int n) phát sinh một số ngẫu nhiên >=0 va <=n
    Duoc dinh nghia qua ham rand() cua thu vien chuan
    Code:
    int random(int n)
    {
       return rand()%n;
    }
    Neu muon phat sinh mot so thuc ngau nhien >=0 và <=n có thể viết hàm đơn giản sau:
    Code:
    double realrandom(int n)
    {
       return (double) rand()/(double) RAND_MAX*n;
    }

  5. #5
    Ngày gia nhập
    10 2006
    Nơi ở
    Hà Nội
    Bài viết
    146

    @POF:Tên chi mà dài rứa, đăng nhập vô diễn đàn gõ mỏi tay luôn ah.

    Nếu dùng hàm rand() của C thì đơn giản quá.

    Nên viết ra một thuật toán cho riêng mình.

    Nếu mình nhớ không lầm thì có 3 cách đơn giản để tạo ra 1 số ngẫu nhiên (mà không dùng hàm rand()) . Đó thực chất chính là 3 biểu thức để tính ra. Nhưng quên mất tiêu rồi. Ai có đọc đc thì post lên nha.

  6. #6
    Ngày gia nhập
    05 2007
    Bài viết
    4

    Mặc định Lập trình C++ | Tạo số ngẫu nhiên thực

    Mình vẫn chưa hiểu rõ hàm ramdom() này lắm .
    Mình nghĩ rằng nếu số có thể làm ra ngẫu nhiên vậy làm thế nào để nó xảy ra ngẫu nhiên có chủ ý và không có chủ ý vậy.
    Bên cạnh đó ,một số chương trình tạo key hay gì đó nó đều ra một dãy chữ ngẫu nhiên nhưng theo chủ ý của người lập trình vậy Hàm ramdom () ở đây phải cài đặt như thế nào vậy

  7. #7
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Cho mình có ý kiến. Nếu ta sử dụng hàm srand, random. Vậy nếu 2 lần chạy chương trình với một số n đưa vào, thì kết quả ngẫu nhiên tạo ra đều như nhau. Ta phải khắc phục nó chứ để người dùng có chạy bao nhiêu lần với một số n thì cũng đều có những kết quả ngẫu nhiên khác nhau.

    Mình có thêm ý kiến về bài mình viết trên. Các bạn khai báo #include <time.h>, rùi sử dụng hàm srand(time(null) trước khi sinh số ngẫu nhiên. ok chứ
    Đã được chỉnh sửa lần cuối bởi iamvtn : 03-10-2007 lúc 02:17 PM.
    Không biết ghi gì luôn ...

  8. #8
    Ngày gia nhập
    06 2007
    Nơi ở
    SN06 - 70 Trương Định - HBT - HN
    Bài viết
    36

    222,, mình cũng có ý kiến....

    Mình dùng borland c++,

    Bạn có thể sinh ra số ngẫu nhiên dương bằng cách sử dụng 2 hàm sau :

    randomize();
    random( n ) ; /// n - giá trị lớn nhất mà số ngẫu nhiên là n-1 và n luôn luôn >=0

    // Chú ý hàm randomize(); là viết trước là để thông báo cho máy sẽ có sự tạo ngẫu nhiên, và kết quả là....
    // Nhớ dùng thư viện stdlib.h nha !!

    Bạn thử đi, rùi sẽ thấy ngay...


    =====================================
    XWAYSTYLE ---------> Brings joy to milions.....
    Intel(R) Pentium 4(R) 2.8GHz Main IntelD845Pemy (Socket 478) RAM 1024Mb VGAFX5200 128Mb 128Bit HDD Maxtor 160Gb PATA Sound Blaster live 5.1 Gamer

    Windows Vista Ultimate Sp1 (activated)
    Rating : 2.5 Mark
    Theme: Windows Aero (very nice!)

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

  1. Kỹ thuật C++ Tạo mảng với các giá trị ngẫu nhiên
    Gửi bởi aydada trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 07-05-2013, 05:54 PM
  2. Lập trình C Hàm tạo số ngẫu nhiên | Cách nhập giá trị ngẫu nhiên cho ma trận?
    Gửi bởi chuong01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 15
    Bài viết cuối: 13-08-2012, 09:43 PM
  3. 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
  4. Cách xây dựng hàm tạo số ngẫu nhiên?
    Gửi bởi buingochuy trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 09-09-2010, 03:51 PM
  5. In ra ngẫu nhiên n số bé hơn x cho trước
    Gửi bởi Taylaptrinh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 30-03-2008, 11:42 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