CODE QUAY SỐ NGẪU NHIÊN PHP

Difficulty: Intermediate Length: Medium Languages: EnglishEspañolहिंदीBahasa IndonesiaPусскийTiếng Việt

Vietnamese (Tiếng Việt) translation by Vy Cam Nguyen (you can also view the original English article)


Hãy để tôi bước đầu bài viết này bởi vấn đề nói rằng hầu như không có sự kiện nào thực thụ hốt nhiên. mặc khi kết quả của trò tung đồng xu kinh khủng về mặt định hướng cũng hoàn toàn có thể được dự đoán trường hợp bọn họ biết tác động của hồ hết nguyên tố tương quan, nlỗi ma ngay cạnh không khí, trọng lực và lực ban sơ.

Bạn đang xem: Code quay số ngẫu nhiên php

Việc tạo nên những chuỗi tình cờ bao gồm chữ cùng số cũng có chế độ tương tự như. Điều giỏi đẹp nhất có thể chờ đợi là tạo ra đều số và chuỗi không áp theo một pattern(hình mẫu) và một kẻ tấn công về thực tế sẽ không thể đoán thù ra.

Trong trả lời này, Shop chúng tôi sẽ đề cập đến những chuyên môn khác nhau nhằm chế tạo ra số và chuỗi ký từ bỏ chữ thốt nhiên vào PHPhường. Một số trong các bọn chúng sẽ được mã hóa, trong những lúc một trong những khác chỉ dành riêng cho nhu cầu thông thường, nlỗi gán tên file trả hốt nhiên hoặc chế tác URL với khuyến nghị username(tên người dùng).

Tạo ra các số bỗng nhiên trong PHP

Có cha hàm không giống nhau để chế tác số bỗng nhiên trong PHPhường. Tất cả các hàm này sẽ dấn một giá trị tối tgọi với tối nhiều có thể cho những số đột nhiên với trả về một số hốt nhiên cho chính mình. Đó là rand($min, $max), mt_rand($min, $max) và random_int($min, $max).

Với rand(), giá trị về tối tphát âm cùng về tối đa của những integer (số nguyên) nhưng bạn có thể tạo nằm trong lòng 0 cùng cực hiếm được trả về do getrandmax(). Trước khi có PHP.. 7.1.0, hàm này chậm chạp rộng khoảng chừng tư lần so với mt_rand(). Tuy nhiên, bước đầu trường đoản cú PHPhường 7.1.0, nó đã thành một alias của mt_rand(). Tuy nhiên, không y hệt như mt_rand(), chúng ta cũng có thể đặt quý giá của $max rẻ hơn $min nhưng mà không khiến ra lỗi.

Với mt_rand(), những quý hiếm về tối thiểu với về tối đa của integer bạn có thể chế tác nằm trong lòng 0 với cực hiếm được trả về bởi mt_getrandmax(). Nó phụ thuộc xúc tiến của Mersenne Twister để tạo nên những số hốt nhiên. Xem ra, mặc dù trước lúc bao gồm PHP. 7.1.0, hàm này sẽ xúc tiến một phiên bạn dạng thuật toán ko đúng mực để tạo thành các số. Tuy nhiên, hàm này đã làm được sửa trong số phiên phiên bản bắt đầu rộng.

Hàm này thậm chí còn còn trsinh hoạt đề nghị giỏi rộng trong PHPhường 7.2.0 bằng phương pháp loại bỏ lỗi modulo. Điều này Tức là đối với một trong những seed ví dụ, chuỗi số bất chợt của doanh nghiệp hiện thời đã tốt rộng một ít đối với các phiên phiên bản cũ hơn. Măc dù một trong những obatambeienwasirherbal.com chuyên dụng đích thực hoàn toàn có thể phụ thuộc xu hướng này. Nếu vậy, bạn cũng có thể sử dụng thuật toán seed cũ hơn bằng phương pháp Điện thoại tư vấn hàm mt_srand() nhằm seed trình sinh sản số bỗng dưng cùng truyền MT_RAND_PHP làm cho giá trị của tham mê số thứ nhì.

Hàm mt_rand() tất cả chu kỳ 219937−1, về cơ phiên bản có nghĩa là vào ngôi trường hòa hợp cực tốt bạn đã có được con số ngẫu nhiên 219937−1 trước lúc chuỗi bước đầu tái diễn. quý khách cần lưu ý rằng bài toán lặp lại một chuỗi không giống như việc lặp lại một số trong những ví dụ. Nói biện pháp không giống, chúng ta có thể nhận được cùng một trong những bỗng nhiên nhị lần, nhưng điều này không có nghĩa là chủ yếu chuỗi đó đã bắt đầu tái diễn. Trình từ sau đó là một ví dụ:

187 3276 1267 15 1267 34598 3467 125 17

Trong chuỗi bên trên, công ty chúng tôi đang có 1267 nhì lần trong hiệu quả, nhưng điều đó không có nghĩa là tổng thể chuỗi bước đầu tái diễn kế tiếp. Không thể bao gồm cùng một trong những lặp lại mau chóng như thế vào một chuỗi bất chợt, tuy vậy điều ấy bao gồm thể!

Số nguyên ổn bỗng nhiên được mã hóa an toàn

Nếu bạn có nhu cầu các số pseuvày (giả) tự nhiên được bảo mật thông tin bởi mã hóa, hàm random_int() trong PHP là tuyển lựa rất tốt của bạn. Nó sẽ khởi tạo những số thiên nhiên giữa những giá trị $min cùng $max được cung ứng, khoác định là PHP_INT_MIN với PHP_INT_MAX. Thật không may, hàm này chỉ bao gồm bắt đầu cung ứng từ PHPhường. 7.0. Đối cùng với những phiên bản trước đó, chúng ta cũng có thể áp dụng polyfill này trên GitHub.

Các số float ngẫu nhiên

Ttốt bởi vì chế tạo ra integer đột nhiên, rất có thể các bạn có muốn tạo nên số float. Điều này rất có thể được tiến hành thuận lợi bằng phương pháp phân tách một số tình cờ với mức giá trị được trả về do mt_getrandmax(). lấy ví dụ dưới đây đã minch họa bí quyết tạo ra một số float tự nhiên trong vòng tự 0 đến 1 hoặc giữa ngẫu nhiên số lượng giới hạn tối tđọc và buổi tối đa nào khác.

lúc tạo nên số float thiên nhiên thân những số lượng giới hạn cố định, chúng tôi bảo vệ rằng các integer bỗng nhiên không quá quá $max - 1. Bằng phương pháp này, công ty chúng tôi có thể chắc hẳn rằng rằng vấn đề góp thêm phần float sẽ không còn rước số vượt vượt giới hạn về tối nhiều.

Seed cho trình chế tạo ra số ngẫu nhiên

Một tư tưởng nên một chút ít giải thích là seeds. Nói một giải pháp dễ dàng và đơn giản, đây chỉ cần rất nhiều số rất có thể được thực hiện để có thể tạo những hàm rand() và mt_rand() trước khi chế tạo ngẫu nhiên số bỗng nhiên như thế nào. Hàm mà seed rand() được call là srand($seed) và hàm chế tạo seed mt_rand() được Hotline là mt_srand($seed, $mode).

Điều đặc biệt buộc phải hãy nhờ rằng câu hỏi hỗ trợ một quý hiếm seed ban đầu các lần trước lúc Call rand() với mt_rand() sẽ không còn tuyệt nhất thiết tạo nên các số ngẫu nhiên xuất sắc rộng. Trong thực tiễn, sử dụng và một seed các lần đã cho chính mình cùng một số trong những ngẫu nhiên!

Seed một vài tự dưng siêu có lợi trong những trường hợp mà lại bạn có nhu cầu chế tạo ra một chuỗi ngẫu nhiên cơ mà rất có thể tái diễn. Đoạn mã sau tạo nên cùng một chuỗi các số ngẫu nhiên Khi chạy nhì lần.

Việc sinh sản các chuỗi thốt nhiên rất có thể lặp lại theo cách này rất có thể góp gỡ lỗi những lịch trình đang rất được thí điểm bằng phương pháp áp dụng dữ liệu bỗng nhiên nếu bạn quan sát và theo dõi seed, chúng ta cũng có thể sao chép và một dữ liệu nguồn vào nhằm tìm ra lỗi không đúng.

Tạo chuỗi ký tự tự nhiên vào PHP

Có những phương pháp để sản xuất chuỗi cam kết từ chữ cùng số thốt nhiên cùng các bạn sử dụng đồ vật gi thì đang phụ thuộc yêu cầu của công ty.

Xem thêm: Tải Game Bus Simulator Việt Nam Bus Simulator 1, Bus Simulator Vietnam

Tạo ra các chuỗi xáo trộn

Nếu bạn có nhu cầu tạo nên các chuỗi ký tự chữ cùng số hốt nhiên từ một cỗ cam kết từ thắt chặt và cố định, chúng ta có thể áp dụng hàm str_shuffle($string). Hàm này đã trả về cho chính mình một chuỗi xáo trộn bất chợt. Bắt đầu tự PHPhường 7.1, thuật toán xác minh sản phẩm tự ngẫu nhiên của những ký kết từ bỏ vào chuỗi công dụng đã có chuyển đổi thành Mersenne Twister.

Hãy hãy nhờ rằng chuỗi thiên nhiên được sinh sản theo cách này sẽ không an toàn về khía cạnh bảo mật thông tin mã hóa. Tuy nhiên, chuỗi vẫn sẽ không còn thể đân oán trước được Khi nhu yếu sử dụng phổ cập như tạo thành thương hiệu file hoặc URL tự nhiên. Đây là vài ba ví dụ:

Kết trái của bạn cũng có thể đang không giống nhau trong cả nhị ngôi trường đúng theo. Trong trường vừa lòng trước tiên, Shop chúng tôi chỉ đảo lộn chuỗi cam kết trường đoản cú được phxay với kế tiếp rước 10 ký từ trước tiên của chuỗi kia. Trong trường vừa lòng sản phẩm công nghệ nhì, Shop chúng tôi đã thêm "video" vào đầu chuỗi được tạo với ".mp4" sinh hoạt cuối.

Phương pháp sản xuất chuỗi cam kết từ chữ và số tự nhiên này khôn xiết tiện lợi, nhưng gặp gỡ yêu cầu một vài ba vấn đề. Ví dụ: các bạn sẽ không bao giờ dành được những ký kết từ bỏ tương tự nhau vào chuỗi hốt nhiên của mình hai lần. Hình như, độ dài của chuỗi tác dụng tự dưng chỉ hoàn toàn có thể nhiều năm bởi chuỗi nhtràn vào.

Tạo chuỗi ngẫu nhiên

Nếu những sự việc tôi liệt kê sinh hoạt bên trên là một trong những tác nhân làm hư vấn đề, chúng ta có thể mong mỏi để ý một trong những triển khai không giống. Các obatambeienwasirherbal.com dưới đây sẽ giải quyết và xử lý cả hai vụ việc này.

quý khách hàng có thể sửa đổi nó nhằm bổ sung những hậu tố và tiền tố cụ thể vào chuỗi bỗng nhiên vừa được chế tác. Những fan đã áp dụng PHPhường 7 rất có thể cải thiện không chỉ có thế bài toán chế tạo chuỗi bằng phương pháp áp dụng hàm bảo mật mã hóa random_int() cụ bởi mt_rand().

Tạo chuỗi hexadecimal (thập lục phân) ngẫu nhiên

Nếu bạn muốn sản xuất những chuỗi thập lục phân thiên nhiên vào PHPhường, chúng ta có thể sử dụng hàm md5($string, $rawDefput) hoặc hàm sha1($string, $rawDefput). Cả nhị sẽ khởi tạo ra hash của một chuỗi nhập vào.

Quý khách hàng vẫn liên tiếp nhận ra các cực hiếm hash nhất miễn là tài liệu vào là nhất. Vấn đề này có thể đã có được bằng cách áp dụng kết quả của hàm nlỗi time() làm cho tài liệu nhập lệ. Theo khoác định, md5() đang trả về chuỗi hexadecimal 32 cam kết trường đoản cú cùng sha1() sẽ trả về chuỗi hexadecimal 40 ký kết tự. Chúng hoàn toàn có thể được cắt theo một độ lâu năm cụ thể bằng phương pháp sử dụng hàm substr().

Dưới đấy là một ví dụ tác dụng được trả về vì chưng những hàm này:

Nlỗi bạn có thể thấy, bài toán tạo thành những chuỗi hexadecimal đột nhiên và độc nhất vô nhị lâu năm cho tới 40 cam kết trường đoản cú vô cùng thuận tiện vào PHP..

Tạo chuỗi thốt nhiên bao gồm bảo mật thông tin mã hóa

Ba hàm để sinh sản những chuỗi ký từ bỏ chữ và số thốt nhiên mà chúng ta đang trao đổi cho đến bây giờ không có bảo mật mã hóa. May mắn cụ, PHP cũng có thể có một hàm random_bytes($length) để tạo thành các byte mang bỗng dưng được bảo mật mã hóa. Tyêu thích số $length xác định chuỗi hiệu quả vẫn lâu năm bao nhiêu.

khi chúng ta có kết quả bên dưới dạng byte thiên nhiên, bạn cũng có thể thực hiện hàm bin2hex() nhằm thay đổi chúng thành cực hiếm hexadecimal. Vấn đề này đang có tác dụng tăng gấp đôi chiều lâu năm của chuỗi.

Một tính năng khác mà chúng ta có thể áp dụng để sinh sản những byte bỗng dưng được bảo mật thông tin mã hóa là openssl_random_pseudo_bytes($length, & $crypto_strong). Giá trị của tmê say số sản phẩm nhì có thể được dùng để xác minh coi chuỗi công dụng sẽ tiến hành tạo bằng thuật toán thù bảo mật mã hóa hay không.

Tổng kết

Trong trả lời này, Shop chúng tôi vẫn để ý việc tạo ra các số và các chuỗi cam kết trường đoản cú chữ bỗng dưng trong PHP.. Việc tạo thành số ngẫu nhiên có thể có lợi trong vô số tình huống, như trong những trò nghịch cơ mà bạn cần tạo nên số đông quân địch hoặc thốt nhiên hỗ trợ cho tất cả những người đùa một số trong những manh mối về những chữ cái nhằm họ hoàn toàn có thể tạo thành một tự hoàn hảo.

Cũng y hệt như những số bất chợt, câu hỏi tạo nên các chuỗi chữ cùng số thiên nhiên cũng có thể tương đối có ích trong vô số nhiều trường đúng theo. Với sự giúp sức của str_shuffle(), chúng ta cũng có thể lựa chọn cỗ ký trường đoản cú nào mở ra vào chuỗi ngẫu nhiên của chính bản thân mình. Với sha1 () cùng md5 (), bạn cũng có thể dễ ợt tạo nên những chuỗi thập lục phân thốt nhiên và cùng với Random_bytes () chúng ta cũng có thể chế tạo ra những chuỗi bảo mật bằng mật mã. Như vậy đã có thể chấp nhận được các bạn tạo nên những tên file cùng username bất chợt mà lại nặng nề đoán thù.

Tôi mong muốn mình muốn khuyên bảo này. Nếu chúng ta bao gồm bất kỳ thắc mắc, hãy đặt ra trong phần bình luận.