Tạo 1 dãy số ngẫu nhiên không trùng

Liên hệ QC
Sao thể áp dụng bài toán LOC DS DUY NHẤT vào đây dc vậy ta?

cũng hoàn toàn tương tự vậy thôi a tuấn,
đã làm được điều này rồi -> danh sách là chuyện nhỏ,vì ta cũng lưu thứ tự hàng (row) đâu có liên quan ký tự hay số đâu,

.
 
tigertiger đã viết:
cũng hoàn toàn tương tự vậy thôi a tuấn,
đã làm được điều này rồi -> danh sách là chuyện nhỏ,vì ta cũng lưu thứ tự hàng (row) đâu có liên quan ký tự hay số đâu,

.
Ác cái là ta ko thể tạo ra dc 1 mãng ảo có giá trị giống như cột A
 
Đề tài này sôi nổi quá nhỉ ? Càng ngày càng nhiều cách giải hay
Tôi cũng thử dùng hàm A1=TEXT(RAND()*100;0) cho kết quả dưới dạng text không thấy xuất hiện tham số 101 . AT thử xem ?
 
Bài này xem như đã giãi dc... nhưng cái mọi người đang cố gắng là làm sao loại bỏ luôn cột phụ ấy!... Khó...
ANH TUẤN
 
Nếu bây giờ tôi muốn có 1 dảy số ngẫu nhiên với điều kiện sau:
-Số đầu tiên nằm trong khoảng từ 1 đến 10
-Số thứ 2 nằm trong khoảng từ 11 đến 20
....
Số thứ 10 nằm trong khoảng từ 99 đến 100
(Dãy số theo nguyên tắc này thì đương nhiên là ko trùng rồi)
Vậy thì làm thế nào nhỉ?
ANH TUẤN
 
Oh... hô... Hôm nay bị làm sao nên hỏi 1 câu vô cùng ngớ ngẫn... Với yêu cầu này thì RANDBETWEEN là ra... Ngu thật
Xin lỗi mọi người
ANH TUẤN
 
anhtuan1066 đã viết:
Oh... hô... Hôm nay bị làm sao nên hỏi 1 câu vô cùng ngớ ngẫn... Với yêu cầu này thì RANDBETWEEN là ra... Ngu thật

a vào GPE nhiều wa mà??? (hic iiiiiiiii)

Nhưng dùng RANDBETWEEN thì phải có AddIn, dùng lun rand() - hàm cơ bản có sẳn trong Excel thì khỏi cần anh ah, như sau

VD:
-Số đầu tiên nằm trong khoảng từ 1 đến 10 thì: = 1+ round(rand()*9,0)
-Số thứ 2 nằm trong khoảng từ 11 đến 20 thì: = 11+ round(rand()*9,0)
....
Số thứ 10 nằm trong khoảng từ 91 đến 100 : = 91+ round(rand()*9,0)

Tổng quát hóa
- muốn có số ngẫu nhiên THỰC trong khoảng min-max: =min+rand()*(max-min)

- muốn có số ngẫu nhiên NGUYÊN trong khoảng min-max: =min+round(rand()*(max-min),0)
 
oh, đó là do bạn kongcom dùng hàm odd() -> trả về số lẻ - muốn sửa lấy số <=100 thì ODD(RAND()*99). TUY NHIÊN lúc này số ngẫu nhiên chỉ là cac số lẻ, ko đạt mục tiêu như atuan đề ra là số ngẫu nhiên từ 1 đến 100...

@TigerTiger đã đổi mới hẳn rồi (nhân đây cám ơn kongcom)-> chỉ cần 1 cột phụ thôi (cột A) và đã cho 10 số ngẫu nhiên trong khoảng 1..100 (có sử dụng đặt name):

+Cột A dùng công thức=ROUND(RAND()*99+1,0) kéo fill tới A100 và đặt 2 name:
PHP:
 TIM =IF(COUNTIF(Sheet1!$A$1:$A$100,Sheet1!$A$1:$A$100)=1,ROW(Sheet1!$A$1:$A$100),"")
 
LIST =SMALL(TIM,ROW(INDIRECT("1:"&COUNT(TIM))))
- tại các ô B1:B10: dùng công thức =INDIRECT("A"&INDEX(LIST,ROW())) -> giá trị cần tìm

*mở rộng tìm hơn 10 giá trị - hết giá trị khác nhau tạo ra - tại cột D (trong file gửi kèm)

xem file gửi kèm,
Bạn ơi, b có thể giải thích dùm ý tưởng của bạn ko nhỉ. Mình đọc mà ko hiểu tại sao đặt 2 name: TIM và LIST đó b :(
 
Web KT

Bài viết mới nhất

Back
Top Bottom