Làm cách nào để tạo một số ngẫu nhiên từ 0 đến 1?c - trình tạo số ngẫu nhiên
Trả lời
Bạn có thể tạo số pseudorandom bằng cách sử dụng stdlib.h. Chỉ cần đính kèm stdlib, sau đó gọi
double random_number = rand()/(double)RAND_MAX;
Để tham khảo, giá trị này sẽ cho các giá trị trong [0.0, 1.0] tức là bao gồm cả 0.0 và 1.0. –
Và quan trọng nhất, nó rất có thể sẽ không công bằng (!) Có nhiều triển khai trong đó tập hợp [0.0, 1.0] chứa nhiều hơn các phần tử RAND_MAX. (_In C, tập hợp [0.0, 1.0] là một tập hợp hữu hạn đếm được) – MSalters
@MSalters, đó là một vấn đề thú vị, bất kỳ suy nghĩ nào về giải pháp? –
Giả sử OP muốn hoặc là 0 hoặc 1:
srand(time(NULL));
foo = rand() & 1;
Sửa lấy cảm hứng từ bình luận: Cũ rand()
triển khai đã có một lỗ hổng - bậc thấp bit có thời gian ngắn hơn nhiều so bit thứ tự cao hơn để sử dụng bit có thứ tự thấp cho việc triển khai như vậy không tốt. Nếu bạn biết thực hiện rand()
của bạn bị từ lỗ hổng này, sử dụng bit bậc cao, như thế này:
foo = rand() >> (sizeof(int)*8-1)
giả thường xuyên 8-bit-per-byte kiến trúc
man 3 drand48 là chính xác những gì bạn yêu cầu cho.
Các drand48() và erand48() chức năng quay trở lại không âm, kích đúp chính xác, giá trị dấu chấm động, phân bố đều trên khoảng [0.0, 1.0].
Chúng được tìm thấy trong #include <stdlib.h>
trên nền tảng UNIX. Tuy nhiên, chúng không có trong ANSI C, vì vậy (ví dụ) bạn sẽ không tìm thấy chúng trên Windows trừ khi bạn mang theo việc triển khai của riêng bạn (ví dụ: LibGW32C).
- 1. Trình tạo số ngẫu nhiên phân phối ngẫu nhiên
- 2. Tạo số ngẫu nhiên trong C
- 3. Trình tạo số ngẫu nhiên tốt cho C
- 4. Cách tạo số ngẫu nhiên lớn C
- 5. Trình tạo số ngẫu nhiên tạo số nguyên cho Java
- 6. Trình tạo số giả ngẫu nhiên - Phân phối số mũ
- 7. Tạo số ngẫu nhiên CUDA
- 8. số C# ngẫu nhiên không là "ngẫu nhiên"
- 9. Tạo số ngẫu nhiên lớn
- 10. C++ 11 số ngẫu nhiên
- 11. Số ngẫu nhiên trong C
- 12. Tạo một bộ tạo số giả ngẫu nhiên trong C#
- 13. Trình tạo số ngẫu nhiên có phân phối beta
- 14. Hiểu phân bố Poisson của trình tạo số ngẫu nhiên
- 15. cố gắng tìm một trình tạo số ngẫu nhiên
- 16. số ngẫu nhiên không quá ngẫu nhiên
- 17. Tạo hai chuỗi độc lập ngẫu nhiên số (C++)
- 18. Trình tạo số ngẫu nhiên trong Haskell thread-safe?
- 19. Trình tạo số ngẫu nhiên không đồng nhất?
- 20. Cách nhận số ngẫu nhiên với trình tạo sai
- 21. Số ngẫu nhiên hoặc số dương Javascript ngẫu nhiên
- 22. tạo số ngẫu nhiên gấp đôi trong C++
- 23. Tạo một số thập phân ngẫu nhiên trong C#
- 24. MVC asp.net C# tạo ngẫu nhiên cùng một số
- 25. Số thập lục phân được tạo ngẫu nhiên trong C#
- 26. Thuật toán tạo số ngẫu nhiên nguồn mở trong C++?
- 27. tạo ngẫu nhiên số nguyên 64 bit
- 28. Số ngẫu nhiên trong POSIX C API
- 29. Tạo số ngẫu nhiên đồng thời
- 30. Xác suất và số ngẫu nhiên C#
Thật ngẫu nhiên hoặc giả ngẫu nhiên? – tvanfosson
sự khác biệt là gì? – tm1
@ tm1 - Số giả ngẫu nhiên chỉ xấp xỉ các thuộc tính của các số ngẫu nhiên và không nhất thiết phải phù hợp với các ứng dụng yêu cầu tính ngẫu nhiên thực, như mật mã. Xem http://en.wikipedia.org/wiki/Pseudorandom_number_generator để được giải thích. – tvanfosson