Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Algoritma untuk menghasilkan angka acak

Tidak, algoritme Anda tidak dapat diskalakan. Apa yang telah saya lakukan sebelumnya adalah mengeluarkan nomor secara berurutan (+1 setiap kali) dan kemudian meneruskannya melalui operasi XOR untuk mencampuradukkan bit sehingga memberi saya nomor yang tampaknya acak. Tentu saja mereka tidak benar-benar acak, tetapi mereka terlihat begitu di mata pengguna.

[Sunting] Informasi tambahan

Logika algoritma ini seperti ini, Anda menggunakan urutan yang diketahui untuk menghasilkan angka unik dan kemudian Anda memanipulasinya secara deterministik, sehingga tidak terlihat serial lagi. Solusi umumnya adalah dengan menggunakan beberapa bentuk enkripsi, yang dalam kasus saya adalah flipflop XOR, karena itu secepat mungkin, dan memenuhi jaminan bahwa angka tidak akan pernah bertabrakan.

Namun Anda dapat menggunakan bentuk enkripsi lain, jika Anda ingin lebih memilih angka yang terlihat lebih acak, melebihi kecepatan (misalnya Anda tidak perlu membuat banyak ID sekaligus). Sekarang poin penting dalam memilih algoritma enkripsi adalah "jaminan bahwa angka tidak akan pernah bertabrakan". Dan cara untuk membuktikan apakah suatu algoritma enkripsi dapat memenuhi jaminan ini adalah dengan memeriksa apakah bilangan asli dan hasil enkripsi memiliki jumlah bit yang sama, dan bahwa algoritma tersebut dapat dibalik (bijection).

[Terima kasih kepada Adam Liss &CesarB untuk memperluas solusi]



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Bootstrap MySQL atau MariaDB Galera Cluster - Diperbarui

  2. SQL menggabungkan hasil menjadi objek di codeigniter

  3. Apakah ada terowongan HTTP MySQL PHP universal yang bagus?

  4. Cara menjalankan atau memuat file .po/.mo untuk pelokalan di php

  5. Tidak ada pernyataan yang disiapkan sisi server menggunakan MySQL Connector/J