30/09/2018, 16:10
Cách sinh số ngẫu nhiên (random) là số thực?
Hồi trước Đạt có làm video sinh số ngẫu nhiên.
Đăng ký khóa học C++ cơ bản 2016 ( NEW ) tại đây : Thông tin về khóa học xem tại đây : -Sự khác biệt giữa 2 khóa học cũ và mới : +Khóa học C++ cơ bản 2016 là khóa học mới, được đầu tư nhiều hơn từ nội dung, phương pháp học, cách học hiệu quả. +Trong khóa học còn có nhiều kiến thức mới như thực hành trên HackerRank, thực hành trên Codefights và Đạt nghĩ mọi người nên học khóa học mới, bởi vì đây là kiến thức mới, phù hợp với hiện tại..... Mặt khác âm thanh cũng tốt hơn nhiều so với khóa học …
Hôm nay @Nhanh_Lan_R_ng có đặt câu hỏi cách sinh số ngẫu nhiên, mà là số thực. Ai có giải pháp gì không
Gợi ý nhé
muốn có số thực thì mình ép kiểu kết quả của rand() thành float, rồi chia cho một số.
Để lấy giá trị từ 0.0 to 1.0
float r = static_cast <float> (rand()) / static_cast <float> (RAND_MAX);
0.0 -> X
float r2 = static_cast <float> (rand()) / (static_cast <float> (RAND_MAX/X));
LO -> HI
float r3 = LO + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(HI-LO)));
Nguồn
C++ random float number generation
answered by
John Dibling
on 03:54PM - 26 Mar 09
Bài liên quan
Hùi trc xem clip này a đạt và lên mạng đọc thấy này cũng hay
http://diendan.congdongcviet.com/threads/t5643::sinh-so-ngau-nhien-trong-pham-vi-tuy-y.cpp
Video và link kia nói về random số nguyên Bài này khó hơn chút, là random ra số thực. Đó là mấy số như
ép kiểu thì k đc rồi! chắc chỉ có cách của thôi à! sao mình k làm 1 vòng lặp làm mốc rồi sinh số ngẫu nhiên dựa trên vòng lặp đó a nhỉ ví dụ lấy 1/2 1/3 ra float mà
Có gợi ý của anh ở trên đấy. Làm theo thử xem
giả sử e cho 1 số random kieu nguyen nhưng cout ra 1 số khác bằng số đó chia cho 1 số thực ( ví dụ căn 3 ) được ko a Đạt ?
Được chứ, miễn sao ra số thực là được.
Ở đây anh có nói khá rõ rồi này, lơ chữ
static_cast<float>
đicứ nói như là mình đang ép kiểu
(float)
@Khang_Nguyen giải thích vụ static_cast được không
e xem đoạn code của a Đạt ở trên có nhiều chỗ không hiểu quá , e code theo cách e hiểu , đầu tiên e lấy ngẫu nhiêu 1 số từ 1 tới 101 , sau đó lấy số đó chia cho 1 số thực ( ví dụ căn 3 ) . rồi lấy số đó trừ đi phần nguyên thì được 1 số ngẫu nhiên từ 0 đến 1 .
Khá, làm gì cũng được, miễn là làm theo ý tưởng của mình và chạy được là được.
Đây là cách anh gợi ý
Code C đây
Code C++ đây
mãi mới hiểu hết được mấy cái code ở trên của a , hóa ra cái thằng static_cast kia là để đổi kiểu int sang các kiểu khác . còn thằng RAND_MAX là thằng mặc định bằng 32767 . .cơ mà trong visual studio e ko cần dùng thư viện <stdio.h> cũng ra kết quả được , mình có cần chú ý khi nào nên dùng , khi nào ko không ạ ?
Em đang nói tới thư viện nào?
thư viện stdio.h ạ a Đạt .e biết tại sao nó ko hiển thị dòng chữ e viết rồi , tại e để trong dấu ngoặc nhọn .
Complier khác có thể tự động include
stdio.h