Trình tạo số ngẫu nhiên dựa trên thời gian sẽ chỉ hoạt động nếu được gọi một lần hoặc sử dụng thời gian ngẫu nhiên giữa một sự kiện đầu vào của người dùng
thời gian chức năng. time[] chỉ cập nhật 18. 2 lần mỗi giây, quá chậm nếu bạn yêu cầu nhanh một vài số ngẫu nhiên
Được trả lời bởi GreenDay2001 59 trong một
Ý bạn là loại đầu ra của
132434454545435435L
nàyChà, điều này xảy ra khi số lớn hơn phạm vi loại số nguyên thông thường. Python chuyển đổi số nguyên bình thường thành loại Dài và Python hiển thị L sau các loại dài. Khi bạn làm _______________ , L không xuất hiện
Được trả lời bởi GreenDay2001 59 trong một
Ý tôi là thay vì in trực tiếp toàn bộ danh sách, bạn phải in các số riêng lẻ, để tránh L ở cuối
for x in rand_num: print x
Đã trả lời bởi ov3rcl0ck 25 trong một
Vâng, có một số thuật toán để tạo số ngẫu nhiên, đơn giản nhất theo hiểu biết của tôi là Trình tạo đồng dư tuyến tính [LCG]
Công thức chung của LCG là X_{n+1} = \left[ a X_n + c \right]~~\bmod~~m. Các …
Tất cả 17 câu trả lời
GreenDay2001
13 năm trướcTôi phải viết mã để tạo số ngẫu nhiên mà không sử dụng mô-đun ngẫu nhiên và chức năng của nó
Tôi phải làm nó như thế nào?
Vâng, có một số thuật toán để tạo số ngẫu nhiên, đơn giản nhất theo hiểu biết của tôi là Trình tạo đồng dư tuyến tính [LCG]
Công thức chung của LCG là X_{n+1} = \left[ a X_n + c \right]~~\bmod~~m. Giá trị được đề xuất cho a, m, c được đưa ra trong trang Wikipedia. Nên sử dụng các kết hợp a, m, c để có tính ngẫu nhiên hơn. Bắt đầu với bất kỳ giá trị nào của X và đối với các số ngẫu nhiên khác nhau mỗi khi bạn chạy mã, hãy chọn X theo thời gian hệ thống
Để lấy số trong phạm vi cụ thể, ví dụ: [L, H] áp dụng điều này cho mọi số ngẫu nhiên được tạo [giả sử Y]. Z = L + Y%[H-L]
0 0
Chia sẻ
Đã chỉnh sửa 13 năm trước bởi GreenDay2001 bởi vì. không có
vegaseat 1.735 Kẻ đạo đức giả của DaniWeb Đồng nghiệp trong nhóm
13 năm trướcTrình tạo số ngẫu nhiên dựa trên thời gian sẽ chỉ hoạt động nếu được gọi một lần hoặc sử dụng thời gian ngẫu nhiên giữa một sự kiện đầu vào của người dùng
thời gian chức năng. time[] chỉ cập nhật 18. 2 lần mỗi giây, quá chậm nếu bạn yêu cầu nhanh một vài số ngẫu nhiên
0 0
Chia sẻ
Đã chỉnh sửa 13 năm trước bởi vegaseat vì. không có
sanchitgarg 0 Áp phích dành cho người mới
13 năm trướcTrình tạo số ngẫu nhiên dựa trên thời gian sẽ chỉ hoạt động nếu được gọi một lần hoặc sử dụng thời gian ngẫu nhiên giữa một sự kiện đầu vào của người dùng
thời gian chức năng. time[] chỉ cập nhật 18. 2 lần mỗi giây, quá chậm nếu bạn yêu cầu nhanh một vài số ngẫu nhiên
vâng tôi đang đối mặt với nhiều vấn đề khi sử dụng thời gian. nó cũng tạo ra một chuỗi các từ không theo thứ tự tăng dần
tôi đã viết mã cho số từ 1 đến 100. đây rồi
nhập ngày giờ
từ thời gian nhập khẩu giấc ngủ
l=[]
tym=[]
n=int[raw_input["Nhập số. của các số được tạo ra"]]
cho tôi trong phạm vi [n]
thời gian = ngày giờ. ngày giờ. Hiện nay[]
t=thời gian. phần triệu giây
l. nối thêm [t]
ngủ [0. 012]
in tôi
cho tôi trong [l]
tym. nối thêm [i/10000]
in tym
tại sao tôi lại yêu cầu một số logic khác không có phạm vi giới hạn
0 0
Chia sẻ
sanchitgarg 0 Áp phích dành cho người mới
13 năm trướcVâng, có một số thuật toán để tạo số ngẫu nhiên, đơn giản nhất theo hiểu biết của tôi là Trình tạo đồng dư tuyến tính [LCG]
Công thức chung của LCG là X_{n+1} = \left[ a X_n + c \right]~~\bmod~~m. Giá trị được đề xuất cho a, m, c được đưa ra trong trang Wikipedia. Nên sử dụng các kết hợp a, m, c để có tính ngẫu nhiên hơn. Bắt đầu với bất kỳ giá trị nào của X và đối với các số ngẫu nhiên khác nhau mỗi khi bạn chạy mã, hãy chọn X theo thời gian hệ thống
Để lấy số trong phạm vi cụ thể, ví dụ: [L, H] áp dụng điều này cho mọi số ngẫu nhiên được tạo [giả sử Y].
Z = L + Y%[H-L]
Tôi đã thử sử dụng công thức này. Nó hoạt động tốt đối với số nhỏ [không chính xác nhỏ nhưng lên tới 1000000000] Sau đó, nó bắt đầu đưa ra L ở cuối số không. Làm cách nào để tăng phạm vi của nó?
0 0
Chia sẻ
GreenDay2001
13 năm trướcÝ bạn là loại đầu ra của 132434454545435435L
này
Chà, điều này xảy ra khi số lớn hơn phạm vi loại số nguyên thông thường. Python chuyển đổi số nguyên bình thường thành loại Dài và Python hiển thị L sau các loại dài. Khi bạn làm _______________ , L không xuất hiện
0 0
Chia sẻ
Đã chỉnh sửa 13 năm trước bởi GreenDay2001 bởi vì. không có
sanchitgarg 0 Áp phích dành cho người mới
13 năm trướcÝ bạn là loại đầu ra của
132434454545435435L
nàyChà, điều này xảy ra khi số lớn hơn phạm vi loại số nguyên thông thường. Python chuyển đổi số nguyên bình thường thành loại Dài và Python hiển thị L sau các loại dài. Khi bạn làm _______________ , L không xuất hiện
in num nghĩa là gì? . Tôi muốn in một danh sách các số
0 0
Chia sẻ
GreenDay2001
13 năm trướcÝ tôi là thay vì in trực tiếp toàn bộ danh sách, bạn phải in các số riêng lẻ, để tránh L ở cuối
for x in rand_num:
print x
0 0
Chia sẻ
sanchitgarg 0 Áp phích dành cho người mới
13 năm trướcCó phương pháp hay logic nào khác ngoài công thức đó không?
0 0
Chia sẻ
ov3rcl0ck 25 Áp phích trẻ
13 năm trướcVâng, có một số thuật toán để tạo số ngẫu nhiên, đơn giản nhất theo hiểu biết của tôi là Trình tạo đồng dư tuyến tính [LCG]
Công thức chung của LCG là X_{n+1} = \left[ a X_n + c \right]~~\bmod~~m. Giá trị được đề xuất cho a, m, c được đưa ra trong trang Wikipedia. Nên sử dụng các kết hợp a, m, c để có tính ngẫu nhiên hơn. Bắt đầu với bất kỳ giá trị nào của X và đối với các số ngẫu nhiên khác nhau mỗi khi bạn chạy mã, hãy chọn X theo thời gian hệ thống
Để lấy số trong phạm vi cụ thể, ví dụ: [L, H] áp dụng điều này cho mọi số ngẫu nhiên được tạo [giả sử Y].
Z = L + Y%[H-L]
Có lẽ đầu vào tốt nhất là ngày/giờ, bộ nhớ đã sử dụng, đầu vào người dùng ngẫu nhiên và chuyển động chuột yêu thích của tôi [truecrypt sử dụng cái này]
0 0
Chia sẻ
sanchitgarg 0 Áp phích dành cho người mới
13 năm trướcCó lẽ đầu vào tốt nhất là ngày/giờ, bộ nhớ đã sử dụng, đầu vào người dùng ngẫu nhiên và chuyển động chuột yêu thích của tôi [truecrypt sử dụng cái này]
Ngay bây giờ tôi đã sử dụng thời gian cho đầu vào của mình. Bạn có thể vui lòng cung cấp thêm một chút thông tin về bộ nhớ đã sử dụng và chuyển động của chuột không?
0 0
Chia sẻ
GreenDay2001
13 năm trướcCó phương pháp hay logic nào khác ngoài công thức đó không?
Tất nhiên có những người khác ngoài kia. Nhưng cái này là bộ đơn giản nhất và sản xuất tốt. Bạn có thể tìm kiếm các thuật toán tạo số giả ngẫu nhiên
http. // vi. wikipedia. org/wiki/List_of_algorithms
>> Có lẽ đầu vào tốt nhất là ngày/giờ, bộ nhớ đã sử dụng, đầu vào người dùng ngẫu nhiên và chuyển động chuột yêu thích của tôi [truecrypt sử dụng cái này]
Tất cả những điều này sẽ giúp bạn gieo hạt. nhưng để tạo các tập hợp, bạn cần một số phương pháp
0 0
Chia sẻ
sanchitgarg 0 Áp phích dành cho người mới
13 năm trướcTất nhiên có những người khác ngoài kia. Nhưng cái này là bộ đơn giản nhất và sản xuất tốt. Bạn có thể tìm kiếm các thuật toán tạo số giả ngẫu nhiên
http. // vi. wikipedia. org/wiki/List_of_algorithms
>> Có lẽ đầu vào tốt nhất là ngày/giờ, bộ nhớ đã sử dụng, đầu vào người dùng ngẫu nhiên và chuyển động chuột yêu thích của tôi [truecrypt sử dụng cái này]
Tất cả những điều này sẽ giúp bạn gieo hạt. nhưng để tạo các tập hợp, bạn cần một số phương pháp
Tôi đã tìm kiếm trên wikipedia và thấy nhiều thuật toán khác. Phần còn lại quá phức tạp
Ý nghĩa của hạt giống là gì?
n bộ đề cập đến danh sách các số ngẫu nhiên?
0 0
Chia sẻ
vegaseat 1.735 Kẻ đạo đức giả của DaniWeb Đồng nghiệp trong nhóm
13 năm trướcMã Python này chỉ cho bạn cách chọn một số ngẫu nhiên từ danh sách
# picking random numbers from a list
# Python2 syntax
def pick_rand[rand_list, start=-1, incr=1]:
"""
closure based function that cycles through rand_list one index
at a time for each call, index resets to zero at end of list
"""
def inner[]:
inner.index += incr
if inner.index >= len[rand_list]:
inner.index = 0
return rand_list[inner.index]
inner.index = start
return inner
# random number list of 100 numbers from 0 to 99
# created by timing user input events
rand_list = [
6, 40, 3, 6, 93, 81, 84, 56, 43, 31, 34, 21, 9, 96, 84, 87, 6, 9,
12, 0, 87, 59, 31, 18, 6, 9, 96, 68, 56, 59, 31, 3, 75, 62, 34, 21,
9, 96, 68, 56, 43, 0, 71, 59, 31, 34, 6, 78, 65, 37, 25, 96, 84, 71,
59, 46, 34, 6, 9, 81, 53, 40, 28, 84, 56, 43, 65, 84, 87, 59, 62,
50, 21, 9, 96, 84, 71, 59, 46, 18, 90, 93, 81, 84, 71, 59, 31, 34,
53, 40, 46, 3, 75, 75, 50, 6, 65, 21, 87, 15
]
# testing only ...
print len[rand_list] # 100
print "average = %d" % [sum[rand_list]//len[rand_list]] # 48
# needed!
rand = pick_rand[rand_list]
# show 10 random numbers
for k in range[10]:
print rand[],
print
# show another 10 random numbers
for k in range[10]:
print rand[],
Danh sách được tạo theo cách này
# a time based random number generator
# that uses the random time between a user's input events
# to create a list of random numbers
# Python2 syntax
import time
def random_number[low, high]:
"""
a time based random number generator
uses the random time between a user's input events
returns an integer between low and high-1
"""
return int[low + int[time.time[]*1000] % [high - low]]
low = 0
high = 100
count = 0
rand_list = []
print "Press enter for a random number [q to quit]:"
while True:
sel = raw_input[]
if sel == 'q':
break
rand = random_number[low, high]
rand_list.append[rand]
# give user feedback
print "%d --> %d" % [count, rand]
count += 1
print rand_list
"""my rand_list 0f 100 random numbers between 0 and 99 -->
[6, 40, 3, 6, 93, 81, 84, 56, 43, 31, 34, 21, 9, 96, 84, 87, 6, 9,
12, 0, 87, 59, 31, 18, 6, 9, 96, 68, 56, 59, 31, 3, 75, 62, 34, 21,
9, 96, 68, 56, 43, 0, 71, 59, 31, 34, 6, 78, 65, 37, 25, 96, 84, 71,
59, 46, 34, 6, 9, 81, 53, 40, 28, 84, 56, 43, 65, 84, 87, 59, 62,
50, 21, 9, 96, 84, 71, 59, 46, 18, 90, 93, 81, 84, 71, 59, 31, 34,
53, 40, 46, 3, 75, 75, 50, 6, 65, 21, 87, 15]
"""
Tôi đã tạo rand_list tương đối ngắn cho ví dụ này, thông thường bạn có thể muốn kéo dài >1000
0 0
Chia sẻ
Đã chỉnh sửa 13 năm trước bởi vegaseat vì. không có
ov3rcl0ck 25 Áp phích trẻ
13 năm trướcNgay bây giờ tôi đã sử dụng thời gian cho đầu vào của mình. Bạn có thể vui lòng cung cấp thêm một chút thông tin về bộ nhớ đã sử dụng và chuyển động của chuột không?
Tìm nạp mức sử dụng bộ nhớ và đầu vào chuột phụ thuộc vào hệ điều hành. Không có thư viện để tìm nạp mức sử dụng bộ nhớ, nhưng bạn có thể sử dụng lệnh "mem" trên windows để tìm nạp và lệnh "ps" hoặc "free" trên UNIX để tìm nạp, nhưng hãy nhớ rằng bạn có thể cần . Đối với đầu vào chuột, bạn có thể sử dụng pyHook cho windows và xlib cho UNIX [OS X hỗ trợ X11 và mọi bản phân phối Unix đáng sử dụng đều hỗ trợ nó]