• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Tạo số ngẫu nhiên trong .NET

Các mẹo vặt linh tinh không thuộc các nhóm trên

Điều hành viên: tungcan5diop, QUANITGROBEST

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Tạo số ngẫu nhiên trong .NET

Gửi bàigửi bởi vo_minhdat2007 » CN 24/05/2009 3:54 pm

.NET vẫn hỗ trợ các hàm/thủ tục của VB6 trong đó có Randomize và Rnd. Tuy nhiên, ta không nên dùng những hàm/thủ tục của VB6 khi .NET có những thứ thay thế, cụ thể là class Random!
VB.NET

Mã: Chọn hết

  1.        Dim GetNumber As New Random 'Khởi tạo một biến Random
  2.         Dim ResultAll As Integer = GetNumber.Next() 'Tạo số ngẫu nhiên nguyên bất kì
  3.         Dim ResultMinMax As Integer = GetNumber.Next(1, 5) 'Tạo số ngẫu nhiên nguyên từ 1 đến 4
  4.         Dim ResultMax As Integer = GetNumber.Next(5) 'Tạo số ngẫu nhiên nguyên <5
  5.         '===================================='
  6.         Dim ResultArray(5) As Byte
  7.         GetNumber.NextBytes(ResultArray) 'Tạo dãy số ngẫu nhiên dạng byte
  8.         '===================================='
  9.         Dim ResultDouble As Double = GetNumber.NextDouble 'Tạo số ngẫu nhiên hữu tỉ từ 0 đến 0.1


C#

Mã: Chọn hết

  1. {
  2.     Random GetNumber = new Random();
  3.     int ResultAll = GetNumber.Next();
  4.     //Tạo số ngẫu nhiên nguyên bất kì
  5.     int ResultMinMax = GetNumber.Next(1, 5);
  6.     //Tạo số ngẫu nhiên nguyên từ 1 đến 4
  7.     int ResultMax = GetNumber.Next(5);
  8.     //Tạo số ngẫu nhiên nguyên <5
  9.     //===================================='
  10.     byte[] ResultArray = new byte[6];
  11.     GetNumber.NextBytes(ResultArray);
  12.     //Tạo dãy số ngẫu nhiên dạng byte
  13.     //===================================='
  14.         //Tạo số ngẫu nhiên hữu tỉ từ 0 đến 0.1
  15.     double ResultDouble = GetNumber.NextDouble;
  16. }



Trong khi sử dụng, class Random tự động lấy giờ hệ thống để tạo số ngẫu nhiên (thay vì dùng Randomize trong VB6), vì vậy bạn có thể yên tâm!



tienqb
Bài viết: 3
Ngày tham gia: T.Tư 09/04/2008 9:25 pm

Re: Tạo số ngẫu nhiên trong .NET

Gửi bàigửi bởi tienqb » T.Năm 11/06/2009 10:35 am

Thanks, mình đang cần.

Hình đại diện của người dùng
clarkkent
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 1641
Ngày tham gia: T.Tư 16/04/2008 11:25 am
Đến từ: Chợ Lách - Bến Tre
Been thanked: 31 time
Liên hệ:

Re: Tạo số ngẫu nhiên trong .NET

Gửi bàigửi bởi clarkkent » T.Năm 06/08/2009 12:37 pm

1 code nữa :D

Mã: Chọn hết

  1.   Public Function RandomNumber(ByVal MaxNumber As Integer, Optional ByVal MinNumber As Integer = 0) As Integer
  2.         'initialize random number generator
  3.         Dim r As New Random(System.DateTime.Now.Millisecond)
  4.  
  5.         'if passed incorrect arguments, swap them
  6.         'can also throw exception or return 0
  7.  
  8.         If MinNumber > MaxNumber Then
  9.             Dim t As Integer = MinNumber
  10.             MinNumber = MaxNumber
  11.             MaxNumber = t
  12.         End If
  13.  
  14.         Return r.Next(MinNumber, MaxNumber)
  15.     End Function
• Hôm bây: www.tinsoftware.com ^ ^
Cố gắng lên...

Hình đại diện của người dùng
hoangthu1974
Guru
Guru
Bài viết: 812
Ngày tham gia: T.Năm 09/03/2006 9:30 am
Đến từ: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 time
Liên hệ:

Re: Tạo số ngẫu nhiên trong .NET

Gửi bàigửi bởi hoangthu1974 » T.Năm 06/08/2009 12:57 pm

Randomize và Rnd vẫn là lệnh chuẩn của VS.NET. Cái Random đó còn có nhiều mục đích khác nữa. Còn với Randomize và Rnd thì chỉ đơn thuần là lấy số ngẫu nhiên mà thôi. Cho nên, nếu chỉ là lấy số ngẫu nhiên thì dùng Randomize và Rnd, nhanh, gọn, lẹ. :)) :))

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Tạo số ngẫu nhiên trong .NET

Gửi bàigửi bởi vo_minhdat2007 » T.Năm 06/08/2009 3:45 pm

Thế anh xem 2 cái, cái nào dài và phức tạp >:) .
Nếu dùng Rnd lại phải thuộc cái công thức :
- Trước Rnd phải Randomize.
- Phải thuộc : Number = Int((Max - Min + 1) * Rnd + 1)

Vừa cài Win, chưa cài VS, không biết VB.NET đã thêm tham số để tạo ngẫu nhi6en bất kì cho Rnd chưa :D

P/S : Cả 2 cách đều dùng 2 dòng code, cái nào cũng thế thôi, nhưng class Random đơn giản, lại không sợ quên Randomize >:)

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Tạo số ngẫu nhiên trong .NET

Gửi bàigửi bởi vo_minhdat2007 » T.Tư 23/09/2009 6:52 pm

Mới nghiên cứu phát hiện một chỗ sai, thành thật xin lỗi :

Mã: Chọn hết

  1.        Dim ResultMinMax As Integer = GetNumber.Next(1, 5) 'Tạo số ngẫu nhiên nguyên từ 1 đến 5


Code này sẽ cho kết quả là số ngẫu nhiên nguyên từ 1 đến 4 chứ không phải 5. Đã sửa ở bài đầu tiên!

langtucodon_dvc
Bài viết: 1
Ngày tham gia: T.Ba 25/01/2011 6:39 pm

bà con help me!!

Gửi bàigửi bởi langtucodon_dvc » CN 02/10/2011 9:24 am

làm sao khi ta nhập vào một số n, và in ra dãy số từ 1 tới n, nhưng mỗi lần in lại in ra thứ tự của các số khác nhau.vd: nhập vào 3, in ra 231 hoặc 132 hoặc 312...........

Hình đại diện của người dùng
TheDark
Guru
Guru
Bài viết: 188
Ngày tham gia: T.Năm 04/11/2010 3:56 pm
Đến từ: Mang Thít - Vĩnh Long
Has thanked: 6 time
Been thanked: 33 time

Re: Tạo số ngẫu nhiên trong .NET

Gửi bàigửi bởi TheDark » CN 02/10/2011 11:37 am

Bài toán của bạn có thể hiểu và giải theo 2 cách!
1/ Tạo ra ngẫu nhiên n số từ 1 đến n không lặp lại. Bài này bác truongphu bên box giải thuật có giải rồi, bạn tự tìm hiểu nhé
2/ Tạo ra ngâu nhiên 1 hoán vị của dãy số từ 1 đến n.
2 bài trên đều rất cơ bản. :D

Hình đại diện của người dùng
NTN
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 472
Ngày tham gia: T.Tư 05/02/2014 3:43 pm
Đến từ: Cao Lãnh, Đồng Tháp,Việt Nam
Has thanked: 19 time
Been thanked: 7 time
Liên hệ:

Re: Tạo số ngẫu nhiên trong .NET

Gửi bàigửi bởi NTN » T.Sáu 23/01/2015 6:25 pm

Cái này còn dài hơn code VB6
Dongthapseo.com - Luutru360.com - Tình yêu của tôi <3


Quay về “[.NET] Mẹo vặt khác”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách