Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menjana Rentetan Aksara Rawak dengan Panjang Tetap dengan Cekap?

Bagaimana untuk Menjana Rentetan Aksara Rawak dengan Panjang Tetap dengan Cekap?

Barbara Streisand
Barbara Streisandasal
2024-10-19 15:40:03716semak imbas

How to Generate a Random Character String of Fixed Length Efficiently?

Menjana Rentetan Watak Rawak Panjang Tetap

Anda berusaha untuk membangunkan kaedah untuk menghasilkan rentetan rawak 5 aksara dengan pendua yang minimum dengan cekap kebarangkalian. Pertimbangkan pendekatan berikut:

  • Fungsi Cincang MD5:
$rand = substr(md5(microtime()),rand(0,26),5);

Pendekatan ini menggunakan pencincangan MD5 dan mengembalikan 5 aksara daripada cincang yang dijana secara rawak rentetan.

  • Susun Watak Kocok:
$seed = str_split('abcdefghijklmnopqrstuvwxyz'
                 .'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
                 .'0123456789!@#$%^&*()');
shuffle($seed); // optional
$rand = '';
foreach (array_rand($seed, 5) as $k) $rand .= $seed[$k];

Kaedah ini menjana tatasusunan aksara dan mengocoknya untuk rawak. Ia memilih 5 aksara dan menambahkannya pada rentetan.

  • Berasaskan Jam Hash Inkremental:
function incrementalHash($len = 5){
  $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  $base = strlen($charset);
  $result = '';

  $now = explode(' ', microtime())[1];
  while ($now >= $base){
    $i = (int)$now % $base;
    $result = $charset[$i] . $result;
    $now /= $base;
  }
  return substr(str_repeat($charset[0], $len) . $result, -$len); 
}

Pendekatan ini mengeksploitasi masa mikro untuk menjana rentetan cincang pseudo-rawak berdasarkan masa semasa. Ia menghasilkan nilai cincang yang berubah secara beransur-ansur. Ambil perhatian bahawa kaedah ini mungkin kurang selamat untuk data sensitif.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Rentetan Aksara Rawak dengan Panjang Tetap dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn