Trình tạo số ngẫu nhiên từ đầu Python

Trình tạo số giả ngẫu nhiên hay còn gọi là PRNG là một khái niệm liên quan đến việc tạo ra một chuỗi số ngẫu nhiên bằng cách sử dụng các công thức toán học. Tạo một số ngẫu nhiên không dễ dàng như vẻ ngoài của nó. Khi chúng ta có một thuật toán và tập hợp các đầu vào, chúng ta sẽ nhận được đầu ra. Và nếu chúng ta lại sử dụng cùng một thuật toán với cùng một bộ đầu vào, chúng ta sẽ nhận được cùng một đầu ra chứ không phải một đầu ra khác. Chúng tôi không thể tạo ra một số thực sự ngẫu nhiên bằng bất kỳ thuật toán nào. Nhưng chúng ta có thể tạo ra các số giả ngẫu nhiên mà các số gần như không thể đoán trước rằng nó có vẻ giống như một số ngẫu nhiên

Có một số thuật toán có sẵn để tạo PRNG. Chúng ta sẽ xem một số thuật toán cơ bản để hiểu khái niệm và triển khai chúng bằng javascript

Phương thức bình phương ở giữa trong JavaScript

Đây là một trong những thuật toán đơn giản nhất để tạo ra một số giả ngẫu nhiên. Nó có bước sau

  • Lấy (các) giá trị hạt giống, có độ dài/kích thước cố định (n), ví dụ, n = 4 và s = ​​1242
  • Bình phương giá trị của s, giá trị kết quả sẽ có độ dài tối đa gấp 2 lần n, nếu không thêm 0 vào bên trái của giá trị kết quả và hãy gọi nó là S. Ví dụ sqr(s) = 1542564, S = 01542564
  • Lấy 4 chữ số ở giữa của S. Đó là giá trị ngẫu nhiên thu được bằng cách sử dụng giá trị hạt giống s. Ví dụ, số ngẫu nhiên = 5425
  • Bây giờ, hãy sử dụng số ngẫu nhiên này làm giá trị hạt giống mới và tạo số ngẫu nhiên tiếp theo bằng cách thực hiện theo bước số 2
  • Nếu bạn muốn số từ 0 đến 1, hãy chia số kết quả cho số tối đa có thể được tạo bằng n chữ số. Ví dụ: 5425/9999 = 0. 54255425542
function pseudoRandom(seed, num_of_digits){
  n = (seed * seed).toString()
   while(n.length < num_of_digits * 2 ){
    n = "0" + n
  }
  start = Math.floor(num_of_digits / 2)
  end = start + num_of_digits
  seed = parseInt(n.substring(start, end))
  return seed
}

num_of_digits = 4
seed = 1452
for(i = 0; i<5; i++){
  random_number = pseudoRandom(seed, num_of_digits)
  console.log(random_number)
  seed = random_number
}

đầu ra

1083
1728
9859
1998
9920

 

Trình tạo cộng dư tuyến tính trong JavaScript

Trình tạo đồng dư tuyến tính là một thuật toán PRNG phổ biến và nó được sử dụng trong nhiều ngôn ngữ và hệ thống lập trình. Nó đơn giản để thực hiện và nhanh hơn để thực hiện. Nó cũng là một thuật toán tốt hơn nhiều so với Phương pháp Middle Square

Công thức

Random number = ( a*seed + c) mod m

ở đâu,
hạt giống, 0 < hạt giống < m là giá trị ban đầu được cung cấp cho .
a, 0 < a < m –  is the multiplier,
c, 0 < c < m – is the increment,
m, 0 < m –  is the modulus.

Để tạo một số ngẫu nhiên trong khoảng từ 0 đến 1, chúng tôi chia số được tạo cho m. Số ngẫu nhiên được tạo sẽ được sử dụng làm giá trị hạt giống để tạo số ngẫu nhiên tiếp theo

Python định nghĩa một tập hợp các hàm được sử dụng để tạo hoặc thao tác các số ngẫu nhiên thông qua mô-đun ngẫu nhiên.  

Các hàm trong mô-đun ngẫu nhiên dựa vào hàm tạo số giả ngẫu nhiên random(), tạo ra một số float ngẫu nhiên trong khoảng từ 0. 0 và 1. 0. Các loại chức năng cụ thể này được sử dụng trong rất nhiều trò chơi, xổ số hoặc bất kỳ ứng dụng nào yêu cầu tạo số ngẫu nhiên

Ví dụ về số ngẫu nhiên trong Python

Tạo danh sách số ngẫu nhiên trong Python bằng cách sử dụng ngẫu nhiên ()

Python3




1083
1728
9859
1998
9920
64
1083
1728
9859
1998
9920
65

1083
1728
9859
1998
9920
66
1083
1728
9859
1998
9920
67
5
t
0

5
t
1
5
t
2

đầu ra.  

0.30078080420602904

Các cách khác nhau để tạo số ngẫu nhiên trong Python

Phương pháp 1. Tạo danh sách số ngẫu nhiên trong lựa chọn Python()

Sự lựa chọn () là một chức năng sẵn có trong ngôn ngữ lập trình Python trả về một mục ngẫu nhiên từ một danh sách, bộ dữ liệu hoặc chuỗi

Python3




5
t
3

5
t
4

 

5
t
5

1083
1728
9859
1998
9920
64
1083
1728
9859
1998
9920
65

 

5
t
8

5
t
9
1083
1728
9859
1998
9920
67
1083
1728
9859
1998
9920
21
1083
1728
9859
1998
9920
22
1083
1728
9859
1998
9920
23
1083
1728
9859
1998
9920
24
1083
1728
9859
1998
9920
23
1083
1728
9859
1998
9920
26
1083
1728
9859
1998
9920
23
1083
1728
9859
1998
9920
28
1083
1728
9859
1998
9920
23
Random number = ( a*seed + c) mod m
10
1083
1728
9859
1998
9920
23
Random number = ( a*seed + c) mod m
12
Random number = ( a*seed + c) mod m
13

5
t
1____215

 

Random number = ( a*seed + c) mod m
16

Random number = ( a*seed + c) mod m
17
1083
1728
9859
1998
9920
67
Random number = ( a*seed + c) mod m
19

5
t
1
5
t
11

đầu ra

5
t

Phương pháp 2. Tạo danh sách số ngẫu nhiên trong Python randrange (xin, kết thúc, bước)

Mô-đun ngẫu nhiên cung cấp một chức năng có thể tạo ra các số ngẫu nhiên từ một phạm vi cụ thể và cũng cho phép thêm các bước vào, được gọi là randrange()

Python3




5
t
12

5
t
13

 

5
t
14

1083
1728
9859
1998
9920
64
1083
1728
9859
1998
9920
65

 

5
t
17

5
t
18

5
t
1
5
t
90
5
t
91
5
t
92
1083
1728
9859
1998
9920
67
5
t
94

5
t
1
5
t
96______122
1083
1728
9859
1998
9920
23
1083
1728
9859
1998
9920
28
1083
1728
9859
1998
9920
23
1083
1728
9859
1998
9920
641
1083
1728
9859
1998
9920
23
1083
1728
9859
1998
9920
643
1083
1728
9859
1998
9920
23
1083
1728
9859
1998
9920
26
1083
1728
9859
1998
9920
646

 

1083
1728
9859
1998
9920
647

1083
1728
9859
1998
9920
648

1083
1728
9859
1998
9920
649

5
t
1
5
t
90
1083
1728
9859
1998
9920
652
5
t
92
1083
1728
9859
1998
9920
67
5
t
94

5
t
1
1083
1728
9859
1998
9920
657
1083
1728
9859
1998
9920
658
1083
1728
9859
1998
9920
23
1083
1728
9859
1998
9920
660
1083
1728
9859
1998
9920
23
1083
1728
9859
1998
9920
26
1083
1728
9859
1998
9920
663

đầu ra.  

1083
1728
9859
1998
9920
2

Phương pháp 3. Tạo danh sách số ngẫu nhiên trong Python bằng seed()

Hàm seed được sử dụng để lưu trạng thái của một hàm ngẫu nhiên để nó có thể tạo một số số ngẫu nhiên trên nhiều lần thực thi mã trên cùng một máy hoặc trên các máy khác nhau (đối với một giá trị seed cụ thể). Giá trị hạt giống là số giá trị trước đó được tạo bởi trình tạo. Lần đầu tiên khi không có giá trị trước đó, nó sử dụng thời gian hệ thống hiện tại

Python3




5
t
12

1083
1728
9859
1998
9920
665

 

5
t
14

1083
1728
9859
1998
9920
64
1083
1728
9859
1998
9920
65

 

1083
1728
9859
1998
9920
669

1083
1728
9859
1998
9920
670

5
t
1____390
1083
1728
9859
1998
9920
673
5
t
92
1083
1728
9859
1998
9920
67
5
t
94

5
t
1____1678

 

1083
1728
9859
1998
9920
679

5
t
00
Random number = ( a*seed + c) mod m
10
5
t
02

 

5
t
03

5
t
1
5
t
90
5
t
06
5
t
92
1083
1728
9859
1998
9920
67
5
t
94

5
t
1____1678

 

5
t
12

5
t
00
5
t
14
5
t
02

 

5
t
03

5
t
1
5
t
90
5
t
19
5
t
92
1083
1728
9859
1998
9920
67
5
t
94

5
t
1____1678

 

5
t
25

5
t
00
Random number = ( a*seed + c) mod m
10
5
t
02

 

5
t
03

5
t
1
5
t
90
5
t
06
5
t
92
1083
1728
9859
1998
9920
67
5
t
94

5
t
1____1678

 

5
t
38

5
t
00
5
t
14
5
t
02

 

5
t
03

5
t
1
5
t
90
5
t
19
5
t
92
1083
1728
9859
1998
9920
67
5
t
94

5
t
1____1678

đầu ra.  

Random number = ( a*seed + c) mod m
1

Phương pháp 4. Tạo danh sách số ngẫu nhiên trong Python sử dụng shuffle()

Nó được sử dụng để xáo trộn một chuỗi (danh sách). Xáo trộn là thay đổi vị trí các phần tử của dãy. Ở đây, các hoạt động xáo trộn được đặt ra

Python3




5
t
51

1083
1728
9859
1998
9920
64
1083
1728
9859
1998
9920
65

 

 

5
t
54

5
t
55
1083
1728
9859
1998
9920
67
1083
1728
9859
1998
9920
21_______358
1083
1728
9859
1998
9920
23____360____123
5
t
62
1083
1728
9859
1998
9920
23
5
t
64
1083
1728
9859
1998
9920
23
5
t
66
Random number = ( a*seed + c) mod m
13

 

5
t
1
5
t
90
5
t
70
5
t
02

5
t
1
5
t
73

 

5
t
74

5
t
75

5
t
1
5
t
90
5
t
78
5
t
02

5
t
1
5
t
73

 

5
t
82

5
t
75

5
t
1
5
t
90
5
t
86
5
t
02

5
t
1
5
t
73

đầu ra

5
t
1

Phương pháp 5. Tạo danh sách số ngẫu nhiên bằng Python sử dụng thống nhất ()

Hàm này được sử dụng để tạo một số ngẫu nhiên dấu phẩy động giữa các số được đề cập trong các đối số của nó. Phải mất hai đối số, giới hạn dưới (được bao gồm trong thế hệ) và giới hạn trên (không được bao gồm trong thế hệ)

Python3




5
t
12

5
t
91

 

5
t
14

1083
1728
9859
1998
9920
64
1083
1728
9859
1998
9920
65

 

5
t
95

5
t
96
1083
1728
9859
1998
9920
67
1083
1728
9859
1998
9920
21
1083
1728
9859
1998
9920
22
1083
1728
9859
1998
9920
23
1083
1728
9859
1998
9920
28
1083
1728
9859
1998
9920
23
Random number = ( a*seed + c) mod m
10
1083
1728
9859
1998
9920
23
1083
1728
9859
1998
9920
643
1083
1728
9859
1998
9920
23
1083
1728
9859
1998
9920
24
Random number = ( a*seed + c) mod m
13

Làm cách nào để tạo số ngẫu nhiên trong Python mà không cần chức năng thư viện?

Làm cách nào để tạo số ngẫu nhiên trong python mà không cần sử dụng thư viện? .
def bsd_rand(hạt giống)
chắc chắn rand()
rand. hạt giống = (1103515245*rand. hạt giống + 12345) & 0x7fffffff
trả lại rand. hạt giống
rand. hột = hột
trả lại rand

Có thể tạo ngẫu nhiên bằng Python không?

Python xác định một tập hợp các hàm được sử dụng để tạo hoặc thao tác các số ngẫu nhiên thông qua mô-đun ngẫu nhiên . Các hàm trong mô-đun ngẫu nhiên dựa vào hàm tạo số giả ngẫu nhiên random(), tạo ra một số float ngẫu nhiên trong khoảng từ 0. 0 và 1. 0.