Advertisement
SqlQuantumLeap

UniquePseudoRandomNumbers_01_RandomizingTests

Jul 21st, 2016
371
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 3.75 KB | None | 0 0
  1. /***********************************************************
  2.  *
  3.  * This script (1 of 3) is part of the following presentation:
  4.  *   Unique, Pseudo Random Numbers: Generate without using RAM, Disk, CPU, I/O, or even time
  5.  *
  6.  * Script:     UniquePseudoRandomNumbers_01_RandomizingTests.sql
  7.  * Created by: Solomon Rutzky
  8.  * Company:    Sql Quantum Leap
  9.  * Created on: 2016-07-10
  10.  * Updated on: NULL ;-)
  11.  *
  12.  * The latest version of this script can be found at:
  13.  * http://pastebin.com/vuK1Aiiv
  14.  *
  15.  ***********************************************************/
  16. USE [tempdb];
  17. SET NOCOUNT, ANSI_NULLS, ANSI_PADDING, QUOTED_IDENTIFIER ON;
  18. ---------------------------------------------------------------------------------
  19. GO
  20.  
  21. --
  22. ----- This script is NOT intended to be run all at once (i.e. F5).
  23. ----- You should highlight each statement, or at least each section
  24. ----- (from BEGIN to END), to run individually.
  25. --
  26. ----- When connected to SQL Server, each section can be collapsed
  27. ----- (i.e. hidden) by clicking the "-" to the left of each "BEGIN".
  28. --
  29. GO
  30.  
  31. -- =================================================
  32. BEGIN -- =   RAND  (no seed)                       =
  33.  
  34. SELECT TOP (20) RAND() AS [RAND]
  35. FROM   [master].[sys].[objects];
  36.  
  37.  
  38. SELECT TOP (20) RAND() AS [RAND-A], RAND() AS [RAND-B]
  39. FROM   [master].[sys].[objects];
  40.  
  41. -- RAND ( https://msdn.microsoft.com/en-us/library/ms177610.aspx )
  42. ----------------------------------------------------
  43. END
  44. GO
  45.  
  46.  
  47. -- =================================================
  48. BEGIN -- =   RAND  (with seed)                     =
  49.  
  50. SELECT RAND(20) AS [0.713946019666829]; -- same across different servers, even different versions of SQL Server?
  51.  
  52.  
  53. SELECT TOP (20) RAND(so.[object_id]) AS [RAND]
  54. FROM   [master].[sys].[objects] so;
  55.  
  56.  
  57. SELECT TOP (20) RAND(so.[object_id]) AS [RAND-A], RAND(so.[object_id]) AS [RAND-B]
  58. FROM   [master].[sys].[objects] so;
  59.  
  60. ----------------------------------------------------
  61. END
  62. GO
  63.  
  64.  
  65. -- =================================================
  66. BEGIN -- =   NEWID                                 =
  67.  
  68. SELECT TOP (20) NEWID() AS [NEWID]
  69. FROM   [master].[sys].[objects] so;
  70.  
  71.  
  72. SELECT TOP (20) NEWID() AS [NEWID-A], NEWID() AS [NEWID-B]
  73. FROM   [master].[sys].[objects] so;
  74.  
  75. -- NEWID ( https://msdn.microsoft.com/en-us/library/ms190348.aspx )
  76. ----------------------------------------------------
  77. END
  78. GO
  79.  
  80.  
  81. -- =================================================
  82. BEGIN -- =   CRYPT_GEN_RANDOM  (no seed)           =
  83.  
  84. SELECT TOP (20) CRYPT_GEN_RANDOM(4) AS [CRYPT_GEN_RANDOM]
  85. FROM   [master].[sys].[objects] so;
  86.  
  87.  
  88. SELECT TOP (20) CRYPT_GEN_RANDOM(4) AS [CRYPT_GEN_RANDOM-A],
  89.                 CRYPT_GEN_RANDOM(4) AS [CRYPT_GEN_RANDOM-B]
  90. FROM   [master].[sys].[objects] so;
  91.  
  92. -- Introduced in SQL Server 2012
  93. -- https://msdn.microsoft.com/en-us/library/cc627408.aspx
  94. ----------------------------------------------------
  95. END
  96. GO
  97.  
  98.  
  99. -- =================================================
  100. BEGIN -- =   CRYPT_GEN_RANDOM  (with seed)         =
  101.  
  102. SELECT TOP (20) CRYPT_GEN_RANDOM(4, 0x1122334455) AS [CRYPT_GEN_RANDOM]
  103. FROM   [master].[sys].[objects] so;
  104.  
  105.  
  106. SELECT TOP (20) CRYPT_GEN_RANDOM(4, 0x1122334455) AS [CRYPT_GEN_RANDOM-A],
  107.                 CRYPT_GEN_RANDOM(4, 0x1122334455) AS [CRYPT_GEN_RANDOM-B]
  108. FROM   [master].[sys].[objects] so;
  109.  
  110. ----------------------------------------------------
  111. END
  112. GO
  113.  
  114.  
  115. -- =================================================
  116. BEGIN -- =   RAND with CRYPT_GEN_RANDOM-based seed =
  117.  
  118. SELECT TOP (20) RAND(CRYPT_GEN_RANDOM(4)) AS [RAND]
  119. FROM   [master].[sys].[objects] so;
  120.  
  121.  
  122. SELECT TOP (20) RAND(CRYPT_GEN_RANDOM(4)) AS [RAND-A],
  123.                 RAND(CRYPT_GEN_RANDOM(4)) AS [RAND-B]
  124. FROM   [master].[sys].[objects] so;
  125.  
  126. ----------------------------------------------------
  127. END
  128. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement