• 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

Moderators: tungcan5diop, QUANITGROBEST

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

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

Postby vo_minhdat2007 » Sun 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

Code: Select all

  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#

Code: Select all

  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
Posts: 3
Joined: Wed 09/04/2008 9:25 pm

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

Postby tienqb » Thu 11/06/2009 10:35 am

Thanks, mình đang cần.

User avatar
clarkkent
Mạnh Thường Quân
Mạnh Thường Quân
Posts: 1641
Joined: Wed 16/04/2008 11:25 am
Location: Chợ Lách - Bến Tre
Been thanked: 31 times
Contact:

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

Postby clarkkent » Thu 06/08/2009 12:37 pm

1 code nữa :D

Code: Select all

  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...

User avatar
hoangthu1974
Guru
Guru
Posts: 813
Joined: Thu 09/03/2006 9:30 am
Location: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 times
Contact:

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

Postby hoangthu1974 » Thu 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ẹ. :)) :))

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

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

Postby vo_minhdat2007 » Thu 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 >:)

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

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

Postby vo_minhdat2007 » Wed 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 :

Code: Select all

  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
Posts: 1
Joined: Tue 25/01/2011 6:39 pm

bà con help me!!

Postby langtucodon_dvc » Sun 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...........

User avatar
TheDark
Guru
Guru
Posts: 188
Joined: Thu 04/11/2010 3:56 pm
Location: Mang Thít - Vĩnh Long
Has thanked: 6 times
Been thanked: 33 times

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

Postby TheDark » Sun 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

User avatar
NTN
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 491
Joined: Wed 05/02/2014 3:43 pm
Location: Đồng Tháp,Việt Nam
Has thanked: 20 times
Been thanked: 8 times
Contact:

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

Postby NTN » Fri 23/01/2015 6:25 pm

Cái này còn dài hơn code VB6
Contact me: trungnhan0911@yandex.com
Github: https://github.com/nhannt201


Return to “[.NET] Mẹo vặt khác”

Who is online

Users browsing this forum: No registered users and 1 guest