Tạo Số Ngẫu Nhiên Không Lập Lại

Các mẹo vặt linh tinh khác, không thuộc nhóm nào
Hình đại diện của thành viên
truongphu
VIP
VIP
Bài viết: 4785
Ngày tham gia: Chủ nhật 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 528 times

Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by truongphu »

Thủ thuật: Tạo Số Ngẫu Nhiên Không Lập Lại
Tác giả: truongphu
Mô tả: Tạo Số Ngẫu Nhiên Không Lập Lại, code ngắn gọn
Đề tài Tạo Số Ngẫu Nhiên Không Lập Lại đã được bàn luận ở forum cũ , Bài viết nầy góp phần làm đơn giản hóa vấn đề (viết lại bài của NoBi).
Cần một list1, các biến có thể khai là byte nếu ít
  1.  
  2. Private Sub Form_Load()
  3. Dim a(20) As Integer, i As Integer, j As Integer
  4. Randomize
  5.     For i = 1 To 20
  6.         a(i) = Int(Rnd * 20) + 1
  7.            For j = 1 To i - 1
  8.                 If i = 1 Then Exit For
  9.                 While a(i) = a(j)
  10.                     a(i) = Int(Rnd * 20) + 1
  11.                     j = 1
  12.                 Wend
  13.            Next
  14.     List1.AddItem a(i)
  15.     Next
  16. End Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
Hình đại diện của thành viên
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: Thứ 5 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 times

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by anhtuyenbk »

Mình xin giới thiệu cho các bạn một cách khác . Kết quả trả về là Array 1 chiều kiểu Integer.
Code dài hơn nhưng số lần lặp ít hơn nhiều :D
Hàm cần thiết

Mã: Chọn tất cả

Public Function CreateRandomNumberNoDuplicate(ByVal SoNumber As Integer) As Integer()Dim i As IntegerDim Ketqua() As Integer: ReDim Ketqua(SoNumber - 1)'Tao gia tri ban dauFor i = 0 To SoNumber - 1    Ketqua(i) = i + 1NextDim ChisoRandom As Integer, Temp As IntegerFor i = 0 To SoNumber - 1    Randomize    ChisoRandom = Fix(Rnd(1) * (SoNumber - 1))    Temp = Ketqua(i)    Ketqua(i) = Ketqua(ChisoRandom)    Ketqua(ChisoRandom) = TempNext'Tra ve ket qua    CreateRandomNumberNoDuplicate = KetquaEnd Function
Cách sử dụng

Mã: Chọn tất cả

Private Sub Command2_Click()Dim c() As Integerc = CreateRandomNumberNoDuplicate(10)Text1.Text = Text1.Text & vbCrLfFor i = 0 To UBound(c())    Text1.Text = Text1.Text & c(i) & " ; "NextEnd Sub
Kết quả

Mã: Chọn tất cả

 4 ; 5 ; 7 ; 9 ; 2 ; 3 ; 1 ; 10 ; 8 ; 6 ; 3 ; 5 ; 7 ; 2 ; 1 ; 4 ; 10 ; 6 ; 9 ; 8 ; 5 ; 4 ; 7 ; 6 ; 1 ; 3 ; 9 ; 10 ; 8 ; 2 ; 2 ; 3 ; 7 ; 9 ; 8 ; 5 ; 4 ; 1 ; 10 ; 6 ; 2 ; 4 ; 8 ; 5 ; 7 ; 10 ; 6 ; 1 ; 3 ; 9 ; 4 ; 7 ; 10 ; 2 ; 6 ; 1 ; 5 ; 3 ; 8 ; 9 ; 9 ; 10 ; 8 ; 5 ; 3 ; 1 ; 2 ; 7 ; 4 ; 6 ; 4 ; 10 ; 2 ; 9 ; 3 ; 5 ; 8 ; 1 ; 7 ; 6 ; 3 ; 7 ; 10 ; 8 ; 1 ; 4 ; 2 ; 9 ; 5 ; 6 ; 
Sửa lần cuối bởi 3 vào ngày anhtuyenbk với 0 lần sửa trong tổng số.
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang
vinhphuoc91
Thành viên tích cực
Thành viên tích cực
Bài viết: 146
Ngày tham gia: Thứ 4 26/03/2008 5:52 pm
Đến từ: Phú Yên
Been thanked: 15 times
Tiếp xúc:

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by vinhphuoc91 »

Tốt lắm, chơi thuật đảo vị trí, nếu không chơi nó số 10 luôn luôn ở cuối :))
My website : http://tinthoitrang.net
Hình đại diện của thành viên
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: Thứ 5 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 times

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by anhtuyenbk »

Sửa lại rồi đó.
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang
giongto35
Thành viên danh dự
Thành viên danh dự
Bài viết: 194
Ngày tham gia: Thứ 5 19/04/2007 10:17 am
Đến từ: Đà Nẵng City
Been thanked: 1 time
Tiếp xúc:

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by giongto35 »

hehe , anhtuyenbk làm giống ý tưởng của em , đó là xáo vị trí , chứ nếu làm như cách truongphu, hay nobi(nghĩa là vừa tạo xong sẽ kiểm tra) sẽ xét rất lâu .

Mã: Chọn tất cả

 Dim A(100) As IntegerDim n As IntegerPrivate Sub XaoSo(ByRef so1 As Integer, ByRef so2 As Integer)Dim tg As Integer    tg = so1    so1 = so2    so2 = tgEnd SubPrivate Sub Form_Load()n = InputBox("nhap so phan tu") Randomize    For i = 1 To n        A(i) = i    Next    For i = 1 To n        XaoSo A(i), A(Round(Rnd * n))    Next    Text1.Text = " "    For i = 1 To n        Text1.Text = Text1.Text & A(i) & " "    NextEnd Sub 
________________________________________________________________________________________________
. . . . . . . . . . . . .. .
Hình đại diện của thành viên
truongphu
VIP
VIP
Bài viết: 4785
Ngày tham gia: Chủ nhật 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 528 times

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by truongphu »

cảm ơn anhtuyenbk, Rất hay vì gọn và dễ hiểu, ít vòng lặp. Tuy nhiên đôi chổ nên chỉnh sửa để thao tác nhẹ nhàng và kết quả không lỗi.
ghi chú: vì nghề nghiệp của bản thân, tôi chỉ biết chỉnh sửa còn sáng tạo cỏn yếu! :D

Mã: Chọn tất cả

 Option ExplicitPrivate Sub Form_Load()Dim Temp As New Collection, i As Integer, NN As Integer    For i = 1 To (10) + 1 'Tao gia tri ban dau        Temp.Add (i)    NextFor i = 0 To (10) - 1  'Tao so ngau nhien    Randomize    NN = Fix(Rnd(1) * (Temp.Count - 1)) + 1    List1.AddItem Temp(NN)    Temp.Remove (NN)NextEnd Sub 
ghi chú: số (10) = 10 trong ngoặc là trị số của mảng muốn khai
Code gọn được nhiều, trong sáng, vòng lặp tối thiểu
Đã TEST

Tb: hê hê, mời giongto35 xem bài học của tôi từ anhtuyenbk ;) ;)
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
giongto35
Thành viên danh dự
Thành viên danh dự
Bài viết: 194
Ngày tham gia: Thứ 5 19/04/2007 10:17 am
Đến từ: Đà Nẵng City
Been thanked: 1 time
Tiếp xúc:

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by giongto35 »

Cái ý tưởng đảo vị trí của em nói trong forum cũ rùi đó :-( , chẳng ai nói
http://quantoancity.com/caulacbovb/foru ... b1b#p72089

Ý bác truong phu là gì đây :-?
________________________________________________________________________________________________
. . . . . . . . . . . . .. .
Hình đại diện của thành viên
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: Thứ 5 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 times

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by anhtuyenbk »

Cái code mà truongphu là cái code mình mới post hồi sáng nhưng đã xóa đi vì cái số cuối luôn luôn là số 10. Tưởng chưa ai đọc chứ . he he
Nhưng truongphu đã khắc phục bằng cách + thêm 1 giá trị vào collection do đó, số cuối cùng sẽ được tham gia vào phép ngẫu nhiên.
Hàm được sửa lại

Mã: Chọn tất cả

Public Function CreateRandomNumberNoDuplicate(ByVal SoNumber As Integer) As Integer()Dim Temp As New Collection, i As Integer, Ketqua() As IntegerReDim Ketqua(SoNumber - 1)For i = 1 To SoNumber + 1   'Tao gia tri ban dau    Temp.Add (i)NextDim ChisoRandom As Integer  'Tao so ngau nhienFor i = 0 To SoNumber - 1    Randomize    ChisoRandom = Fix(Rnd(1) * (Temp.Count - 1)) + 1    Ketqua(i) = Temp(ChisoRandom)    Temp.Remove (ChisoRandom)Next'Tra ve ket qua    CreateRandomNumberNoDuplicate = KetquaEnd Function 
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang
Hình đại diện của thành viên
truongphu
VIP
VIP
Bài viết: 4785
Ngày tham gia: Chủ nhật 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 528 times

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by truongphu »

gửi bởi MATH-INFO » 1/3/09 10:11 am

Mã: Chọn tất cả

Option Explicit Private Sub Form_Load()    Dim a(20) As Integer, i As Integer, nCount As Integer    Dim res As Boolean     Randomize    nCount = 10    res = Gen_random(a, nCount, 1, 10)    For i = 1 To nCount        List1.AddItem (a(i))    NextEnd Sub Function Gen_random(a() As Integer, nCount As Integer, iMin As Integer, iMax As Integer) As Boolean        Dim nDistance  As Integer    nDistance = iMax - iMin + 1    If (nDistance < nCount) Then Gen_random = False     Dim b() As Integer    ReDim b(nDistance)        Dim i As Integer, rand As Integer    For i = iMin To iMax        b(i - iMin) = i    Next     For i = 1 To nCount        rand = Int(rnd * nDistance)         a(i) = b(rand)        b(rand) = b(nDistance - 1)         nDistance = nDistance - 1    Next     Gen_random = True End Function 
gửi bởi truongphu » 1/3/09 10:59 am

Mã: Chọn tất cả

Private Sub Command1_Click()Dim a%, u%, dSet d = CreateObject("Scripting.Dictionary")Randomize    Do While List1.ListCount < 10        a = Int(Rnd * 10) + 1        If Not d.Exists(a) Then            d.Add a, u            List1.AddItem a            u = u + 1        End If    LoopEnd Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
Hình đại diện của thành viên
truongphu
VIP
VIP
Bài viết: 4785
Ngày tham gia: Chủ nhật 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 528 times

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by truongphu »

Sau đây là code Ngẫu nhiên không lập lại 20 số tự nhiên đầu tiên dùng ListBox:
Cần List1 và Command1

Mã: Chọn tất cả

Private Sub Command1_Click()List1.Clear    For i = 0 To 19        List1.AddItem i    NextRandomize    For i = 0 To 19        j = Int(Rnd * (List1.ListCount - i))            If j = -1 Then j = 0        a = List1.List(j)        List1.RemoveItem j        List1.AddItem a    NextEnd Sub 
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
Hình đại diện của thành viên
ledoninh
VIP
VIP
Bài viết: 38
Ngày tham gia: Thứ 6 26/08/2005 3:52 pm
Đến từ: HCMC
Has thanked: 1 time
Tiếp xúc:

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by ledoninh »

Xem qua những topic mà bác truongphu tham gia, thấy nhiều và đa dạng dễ sợ, phải gọi bác là chiến binh vì sự quả cảm !
Tôi xin bàn thêm về chủ đề lấy các giá trị ngẫu nhiên không trùng lắp.
Ngay trong forum cũ đã có khá nhiều người tham gia các chủ đề tương tự, nay lại có thêm chủ đề này. Lẽ ra bác truongphu nên làm bài tổng kết thì tốt hơn là nêu lại vấn đề.
Tóm lại, ta có hai cách:
1. Đánh số các phần tử, lấy ngẫu nhiên, bỏ giá trị lấy được ra khỏi tâp hợp rồi tiếp tục lấy ngẫu nhiên. Topic đầu tiên trên diễn đàn VB này là 'Lấy ngẫu nhiên bài trong 52 lá' : http://quantoancity.com/caulacbovb/foru ... 911c1b0b1c . Ưu điểm: lần nào lấy cũng 'chắc cú', không sợ trùng lắp. Nhược điểm: với tập hợp hàng trăm ngàn hoặc vô hạn phần tử thì không áp dụng được.
2. Cứ lấy ngẫu nhiên, lần sau phải so sánh với các lần trước, nếu trùng thì làm lại. Topic đầu tiên trên diễn đàn VB này đề cập là 'Trúc xanh' (trong "Đề tài chung", sao giờ tìm không thấy, nhưng chắc là có trong vbLib). Ưu điểm: không làm tốn bộ nhớ và áp dụng được cho mọi tập hợp (không rỗng). Nhược điểm: dễ bị kéo dài do kết quả sau trùng kết quả trước, nhất là khi ta lấy gần hết các giá trị của tập hợp.
Trong hướng thứ hai, Nobi và những người khác cho các giá trị đã lấy vào mảng rồi dùng vòng lặp kiểm tra, theo tôi, nếu ta cần lấy tập con khá lớn thì mảng này cũng là vấn đề. Trong trường hợp đó, có lẽ đưa vào file thì mới ổn. Tôi xin giới thiệu một cách dùng tạm, không biết là nhanh hơn hay chậm hơn cách của các bạn khác, đó là dùng string:

Mã: Chọn tất cả

str="[color=#FF0000]_[/color]"m=10000y=2009.0506Randomizei=1while i<m    x=rnd*y    ss=Cstr(x) & "_"     'sửa    If Instr(str, "_" & ss)=0 then   'sửa        i=i+1        str=str & ss    end ifwend
Ta có thể lấy các phần tử từ str bằng hàm split...
---
Hôm nay đọc 1 bài viết vận dụng code này của bác truongphu, chợt giật mình vì lý luận có chỗ hở, đành sửa lại. Thế mới biết, tính phê bình thì rất cao, còn tự phê có phần hạn chế !!!
Sửa lần cuối bởi 1 vào ngày ledoninh với 0 lần sửa trong tổng số.
Không mua hàng tiêu dùng của Trung Quốc, Đài Loan
Hình đại diện của thành viên
truongphu
VIP
VIP
Bài viết: 4785
Ngày tham gia: Chủ nhật 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 528 times

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by truongphu »

ledoninh đã viết:phải gọi bác là chiến binh vì sự quả cảm !
Cảm ơn lời động viên của anh ledoninh, chiến binh quả cảm vì... 'điếc không sợ súng!'
ledoninh đã viết:

Mã: Chọn tất cả

If Instr(str,ss)=0 then
Tác giả góp thêm một cách với hàm Instr
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
Hình đại diện của thành viên
ledoninh
VIP
VIP
Bài viết: 38
Ngày tham gia: Thứ 6 26/08/2005 3:52 pm
Đến từ: HCMC
Has thanked: 1 time
Tiếp xúc:

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by ledoninh »

truongphu đã viết:Tác giả góp thêm một cách với hàm Instr
Lâu rồi tôi không lập trình với VB, nên ngẫu nhiên vậy thôi, tôi không nhớ cách dùng chính của hàm đó thế nào. Đoạn code trên tôi lấy từ trang asp của tôi (lấy ngẫu nhiên các câu hỏi trắc nghiệm rồi lưu vào cookie của user), chỉ thay số nguyên ở đó thành số double ở đây. Có điều, trong mã VBScript của asp thì không cần khai báo biến, còn VB thì cần, và hàm Randomize của VB không có "()" ở cuối.
Không mua hàng tiêu dùng của Trung Quốc, Đài Loan
Hình đại diện của thành viên
truongphu
VIP
VIP
Bài viết: 4785
Ngày tham gia: Chủ nhật 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 528 times

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by truongphu »

Module

  1. Dim NNKLL As String
  2. Public Function NgauNhien(ByValAs Integer) As Integer
  3. 1  Randomize
  4.     Dim temp As String, sotam As Integer
  5.     sotam = Int(Rnd * Sô)
  6.     temp = "@" & CStr(sotam) & "#"
  7.     If InStr(1, NNKLL, temp) Then
  8.         GoTo 1
  9.     Else
  10.         NNKLL = NNKLL & temp
  11.         NgauNhien = sotam
  12.     End If
  13. End Function
  14. ' truongphu
  15. ' Sô là mâu~ không lâp lai
  16. ' Nê'u dùng Vòng lap, thì sô' Vòng lap không Ðuoc lo'n ho'n mâu~
  17. ' Vòng lap <= Sô
Tập tin đính kèm
Function Ngaunhien KLL.rar
(1.67 KiB) Đã tải về 849 lần
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
Hình đại diện của thành viên
Kasper
Guru
Guru
Bài viết: 1063
Ngày tham gia: Thứ 6 16/05/2008 10:54 am
Has thanked: 2 times
Been thanked: 76 times
Tiếp xúc:

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by Kasper »

Góp vui một cách, cái này hồi trước hay dùng để đảo vị trí bài thi trắc nghiệm.
Kết quả sẽ trả về trong một Collection :D . Cực kỳ ngắn gọn, 5 dòng code thôi.
  1.     Dim c As New Collection
  2.     Dim i As Integer
  3.     On Error Resume Next
  4.     While c.Count < 20 '20 số phần tử cần random, random từ 1-20, không lấy số 0.
  5.        i = Int(1 + 20 * Rnd)
  6.         c.Add i, Str(i)
  7.     Wend
Lành tợ tòng, ác tợ hoa,
Nhà hòa muôn việc đều nên.
PhuongThanh37
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 87
Ngày tham gia: Thứ 6 09/09/2005 1:38 pm
Đến từ: Liên Hà, Đông Anh, HN
Tiếp xúc:

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by PhuongThanh37 »

VB có sẵn function Rnd rồi mà.
  1. 'Ramdom từ 1 đến n
  2. 'Int((n * Rnd) + 1)
Uống Chanh & nghe Chanh hát
Hình đại diện của thành viên
Kasper
Guru
Guru
Bài viết: 1063
Ngày tham gia: Thứ 6 16/05/2008 10:54 am
Has thanked: 2 times
Been thanked: 76 times
Tiếp xúc:

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by Kasper »

PhuongThanh37 đã viết:VB có sẵn function Rnd rồi mà.
  1. 'Ramdom từ 1 đến n
  2. 'Int((n * Rnd) + 1)
Cái này chỉ là random 1 số, số này nằm trong đoạn [1,n] chứ không phải random n số. :D
Lành tợ tòng, ác tợ hoa,
Nhà hòa muôn việc đều nên.
boy1234
Guru
Guru
Bài viết: 448
Ngày tham gia: Thứ 2 13/10/2008 3:12 pm
Đến từ: Dĩ An - Bình Dương
Been thanked: 32 times

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by boy1234 »

Xin các bác pro bớt chút thời gian cho e hỏi chút. E muốn làm 1 chương trình quay số trúng thưởng.
Ví dụ: có 100 phiếu phát ra. Chọn 20 phiếu trúng thưởng. Tôi muốn là mỗi lần bấm, nó sẽ sinh ra 1 số ngẫu nhiên từ 1 -> 100. Cái vướng mắc của tôi ở đây là mỗi lần quay sau thì số đã ra rồi không được sinh ra nữa. THuật toán chỗ này làm sao. Các bậc sư huynh ai biết xin chỉ giáo đàn em. Cảm ơn rất nhiều.
viewtopic.php?f=50&t=15894
Hic bài này hỏi vi phạm nội quy bị vô thùng rác mà mình cứ làm thử xong chẳng biết post vào đâu. :(
Cho vào đây nhé! Sr spam
Tập tin đính kèm
RandTop20.rar
(6.62 KiB) Đã tải về 675 lần
Dạo này nghiện honda SS50
sir
Bài viết: 1
Ngày tham gia: Thứ 5 23/12/2010 10:21 pm

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by sir »

"Ví dụ: có 100 phiếu phát ra. Chọn 20 phiếu trúng thưởng. Tôi muốn là mỗi lần bấm, nó sẽ sinh ra 1 số ngẫu nhiên từ 1 -> 100."
Đây là bài hôm trước tôi hỏi trên diễn đàn. Sau khi tham khảo của bác truongphu tôi đã viết chương trình quay số:
Tập tin đính kèm
Quayso.rar
(149.2 KiB) Đã tải về 1061 lần
Hình đại diện của thành viên
TheDark
Guru
Guru
Bài viết: 188
Ngày tham gia: Thứ 5 04/11/2010 3:56 pm
Đến từ: Mang Thít - Vĩnh Long
Has thanked: 6 times
Been thanked: 33 times

Re: Tạo Số Ngẫu Nhiên Không Lập Lại

Gửi bài by TheDark »

Mình đã xem qua các cách làm của các bạn! Nói chung là có 2 cách. Nhưng cách 1 mình thấy có 1 vấn đề rất lớn.
Cách 1 có thể tạo ra dãy ngẫu nhiên nhưng giá trị của các phần tử phải liên tục. Vấn đề là ở bước "Tao gia tri ban dau" . Các giá trị được tạo ra phải liên tục. Nếu dùng hàm Rnd ở đây thì lại bị trùng = !!!
Giã sử bài toán là tạo ra 20 số có giá trị ngẫu nhiên từ 1 ~ 100 thì làm thế nào?
Chẵng lẽ ta tạo ra 100 số, trộn lên rồi lấy ra 20 số!
Theo mình thì cách 2 có vẽ chậm nhưng lại rất ỗn định và tổng quát.
Đăng trả lời

Quay về