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
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
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 đổiC++ Code:
#include <iostream> #include <windows.h> #include <vector> #include <boost/lexical_cast.hpp>[/php] 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 [php]int RandomIntAsInt(int UpperBound) { UpperBound++; srand(GetTickCount()); int random; random = rand()%UpperBound; return random; }
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ốngC++ Code:
string RandomIntAsString(int UpperBound) { UpperBound++; srand(GetTickCount()); int random; random = rand()%UpperBound; string total = ""; total = boost::lexical_cast<std::string>(random); 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!C++ Code:
string RandomNumbersString(int UpperBound, int TotalNumbers) { srand(GetTickCount()); int loop = 0; vector<int> random(TotalNumbers); int N = 0; for(loop = 0; loop < TotalNumbers; loop++){ random[N] = rand()%UpperBound; N++; } string temp = ""; string total = ""; int stringloop; temp = boost::lexical_cast<std::string>(random[0]); total = total + temp; N = 1; --TotalNumbers; for(stringloop = 0; stringloop < TotalNumbers; stringloop++){ temp = boost::lexical_cast<std::string>(random[N]); total = total + " " + temp; N++; } return total;
Chúc may mắn!
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
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
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
Neu muon phat sinh mot so thuc ngau nhien >=0 và <=n có thể viết hàm đơn giản sau:Code:int random(int n) { return rand()%n; }
Code:double realrandom(int n) { return (double) rand()/(double) RAND_MAX*n; }
@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.
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
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 ...
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!)