Xin hỏi cách tạo ngẫu nhiên gồm ký tự và số (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thanhvien1802

Thành viên chính thức
Tham gia
31/12/07
Bài viết
64
Được thích
17
Muốn tạo 1 dãy ký tự ngẫu nhiên gồm 6 ký tự gồm các số từ 0 đén 9 và chữ từ a đến z thì phải dùng lênh gì.
MÌnh xin cảm ơn trước.
 
Lần chỉnh sửa cuối:
=char(65+int(26*rand()))

:-=. . . . . . . . .>@$@!^% . . . . . . . . . . . >!$@!!
=char(65+int(26*rand())) & int(9*rand()&. . . .
 
Lần chỉnh sửa cuối:
Muốn tạo 1 dãy ký tự ngẫu nhiên gồm 6 ký tự gồm các số từ 0 đén 9 và chữ từ a đến z thì phải dùng lênh gì.
MÌnh xin cảm ơn trước.
Tôi không biết trong Excel 2003 thì dùng hàm gì cho lẹ. Nhưng với Excel 2007 thì nhanh lắm:
  • Tạo số ngẫu nhiên từ 0 đến 9: =RANDBETWEEN(0, 9)

  • Tạo ký tự ngẫu nhiên từ a đến z: =CHAR(RANDBETWEEN(97, 122))

  • Tạo ký tự ngẫu nhiên từ A đến Z: =CHAR(RANDBETWEEN(65, 90))
 
Tôi không biết trong Excel 2003 thì dùng hàm gì cho lẹ. Nhưng với Excel 2007 thì nhanh lắm:
  • Tạo số ngẫu nhiên từ 0 đến 9: =RANDBETWEEN(0, 9)
  • Tạo ký tự ngẫu nhiên từ a đến z: =CHAR(RANDBETWEEN(97, 122))
  • Tạo ký tự ngẫu nhiên từ A đến Z: =CHAR(RANDBETWEEN(65, 90))

Excel 2003 cũng xài cú pháp hàm như anh BNTT đã trình bày. Tuy nhiên, các bạn phải vào Add-Ins và kích hoạt Analysis ToolPak thì mới xài được các hàm này!
 
Vậy 1 số ngẫu nhiên gồm từ 0 đến 9 a đến z và các kí tự đặc biệt có công thức là :
=CHAR(RANDBETWEEN(48,122))
Từ 0 to 9 : (giá trị 48 đến 57)
A đến Z (65 ->90)
a dến z (97 -> 122)
Vậy chỉ cần lấy 1 giá trị ngẫu nhiên gồm 0->9, a->z và A đến Z "Không gồm các kí tự đặc biệt, thì dùng lệnh như thế nào. "Không lấy giá trị [58:64] và [91:96]"
Xin cảm ơn nhiều.
 
Lần chỉnh sửa cuối:
Vậy 1 số ngẫu nhiên gồm từ 0 đến 9 và a đến z có công thức là :=(48,122)

Không hiểu bạn có đọc kỹ hướng dẫn của các anh chị bên dưới không? bài của ChanhTQ@BNTT.

Đã là một số ngẫu nhiên thì làm gì có chữ.
Nếu muốn:
....tạo 1 dãy ký tự ngẫu nhiên gồm 6 ký tự gồm các số từ 0 đén 9 và chữ từ a đến z
Thì bạn dùng dấu "&" để nối các hàm Char(RANDBETWEEN()) lại với nhau:
Ví dụ: Tạo chuỗi có 6 ký tự gồm 3 ký tự số và ba ký tự chữ ngẫu nhiên:
= RANDBETWEEN(0,9)&RANDBETWEEN(0,9)&RANDBETWEEN(0,9)&Char(RANDBETWEEN(97,122))&Char(RANDBETWEEN(97,122))&Char(RANDBETWEEN(97,122))
 
Lần chỉnh sửa cuối:
=char(int(62*rand())+if(int(62*rand())<10,48,if(int(62*rand())<36,55,61)))
Kiểm tra lại thì công thức trên bị sai.
Có lẽ là ở chỗ các RAND không bằng nhau?
Sửa lại : Chuyển int(62*rand()) sang một cell nào đó (ví dụ A1) rồi truy cập đến.
=char(A1+if(A1<10,48,if(A1<36,55,61)))
Nhưng không hay vì phải tốn 1 cell!
 
Lần chỉnh sửa cuối:
Xin góp 1 công thức dùng cho OFF2003 không sử dụng thêm Add-In, hơi dài chút.
=CHOOSE(INT(RAND()*3+1),INT(RAND()*10),CHAR(INT(RAND()*26+65)),CHAR(INT(RAND()*26+97)))&CHOOSE(INT(RAND()*3+1),INT(RAND()*10),CHAR(INT(RAND()*26+65)),CHAR(INT(RAND()*26+97)))&CHOOSE(INT(RAND()*3+1),INT(RAND()*10),CHAR(INT(RAND()*26+65)),CHAR(INT(RAND()*26+97)))&CHOOSE(INT(RAND()*3+1),INT(RAND()*10),CHAR(INT(RAND()*26+65)),CHAR(INT(RAND()*26+97)))&CHOOSE(INT(RAND()*3+1),INT(RAND()*10),CHAR(INT(RAND()*26+65)),CHAR(INT(RAND()*26+97)))&CHOOSE(INT(RAND()*3+1),INT(RAND()*10),CHAR(INT(RAND()*26+65)),CHAR(INT(RAND()*26+97)))
 
Lần chỉnh sửa cuối:
MÌnh viét xong thay đổi lại liền : Nhưng không kịp vì Bạn "ca_dafi " đã trả lời
Mình đã viết lại:
Vậy 1 số ngẫu nhiên gồm từ 0 đến 9 a đến z và các kí tự đặc biệt có công thức là :
=CHAR(RANDBETWEEN(48,122))
Từ 0 to 9 : (giá trị 48 đến 57)
A đến Z (65 ->90)
a dến z (97 -> 122)
Vậy chỉ cần lấy 1 giá trị ngẫu nhiên gồm 0->9, a->z và A đến Z "Không gồm các kí tự đặc biệt, thì dùng lệnh như thế nào. "Không lấy giá trị [58:64] và [91:96]"
Cảm ơn các bạn nhiều. Mình đã sử dụng công thúc của bạn " rollover79"
 
Chỉnh sửa lần cuối bởi điều hành viên:
Hay quá! Cách tạo chữ, số ngẫu nhiên này có thể ứng dụng vào việc cho mã phách bài thi. Phòng thi có 24 thí sinh, mình cũng muốn cho tạo chữ ngẫu nhiên nhưng trong phòng thi này không có thí sinh nào có mã phách trùng nhau. Nghĩa là không có thí sinh nào trong cùng phòng thi có kí tự trùng nhau (mình cho mỗi thí sinh chỉ có 1 kí tự đại diện thôi).
Tương tự, mỗi phòng thi của một môn thi mình cũng sẽ cho 1 chữ số đại diện. Ví dụ có 200 phòng thi (sau khi đã nhân số môn thi) thì mình sẽ cho một dãy gồm 3 chữ số ngẫu nhiên. Mình cũng không muốn có dãy số nào trùng nhau (ngẫu nhiên) trong 200 số này.
Các bạn chỉ mình với. Mình dùng ofice 2003 và cũng không muốn dùng Add-in.
 
Lần chỉnh sửa cuối:
+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 Code:
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,
xls.gif
tao10songaunhien_tigertiger.xls
 
có ai biết cách xuất chuỗi ký tự gồm 12 ký tự gồm chữ hoa và thường "ABCDEFGHIJKMNOPQRSTUVWXYZ abcdefghijkmnopqrstuvwxyz" và không được trùng nhau, làm ơn chỉ giúp, cám ơn nhiều
 
Bạn thử với hàm tự tạo sau:
PHP:
Option Explicit
Function Chuoi12()
 Dim jJ As Byte, VTr As Byte
 Dim StrC As String
 
 StrC = "ABCDEFGHIJKMNOPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
 For jJ = 1 To 12
    Randomize
    VTr = 2 + Int(36 * Rnd())
    Chuoi12 = Chuoi12 & Mid(StrC, VTr, 1)
    StrC = Mid(StrC, VTr + 1, 52) & Left(StrC, VTr - 1)
 Next jJ
End Function

Cú fáp hàm tại 1 ô trống nào đó sẽ là = Chuoi12()

Chúc thành công!
 
Lần chỉnh sửa cuối:
Chuỗi ngẫu nhiên tớ làm như sau :D
Tạo 1 chuỗi 4 kí tự ngẫu nhiên:
=CONCATENATE(CHAR(RANDBETWEEN(48,122)),CHAR(RANDBETWEEN(48,122)),CHAR(RANDBETWEEN(48,122)),CHAR(RANDBETWEEN(48,122))
Thêm 1 kí tự thì tớ thêm 1 chuỗi này vào: CHAR(RANDBETWEEN(48,122) :D
 
MÌnh viét xong thay đổi lại liền : Nhưng không kịp vì Bạn "ca_dafi " đã trả lời
Mình đã viết lại:
Vậy 1 số ngẫu nhiên gồm từ 0 đến 9 a đến z và các kí tự đặc biệt có công thức là :
=CHAR(RANDBETWEEN(48,122))
Từ 0 to 9 : (giá trị 48 đến 57)
A đến Z (65 ->90)
a dến z (97 -> 122)
Vậy chỉ cần lấy 1 giá trị ngẫu nhiên gồm 0->9, a->z và A đến Z "Không gồm các kí tự đặc biệt, thì dùng lệnh như thế nào. "Không lấy giá trị [58:64] và [91:96]"
Cảm ơn các bạn nhiều. Mình đã sử dụng công thúc của bạn " rollover79"
nếu không chọn ký tự đặc biệt ,chỉ ngẫu nhiên số hoặc chữ làm thế nào bạn
 
Web KT

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

Back
Top Bottom