Link to home
Start Free TrialLog in
Avatar of emi_sastra
emi_sastra

asked on

Random number

Hi All,

I want to create random number for transaction.
The random number is not just from 1 - 10, when we have 10 transaction then we have 1 to 10.

I mean the number created not a serial number.
And the random number created using keys provided by us.
Some kind of systematic readable encryption.

How could I do it ?

Thank you.
Avatar of angus_young_acdc
angus_young_acdc
Flag of United Kingdom of Great Britain and Northern Ireland image

The following code will generate you a random number based on two inputs

Public Class Form1
    Dim result As String
    Dim rand As New Random()

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        rand.Next(
    End Sub

    Private Sub GenerateRandom(numberOne As Integer, numberTwo As Integer)
        result = rand.Next(numberOne, numberTwo)
    End Sub
End Class

Open in new window

Avatar of emi_sastra
emi_sastra

ASKER

Hi  angus_young_acdc,

Your code seems not solve my question.
Your code will create a serial number at the end.

numberOne = 1
numberTwo  = 10
At the end we will have a serial number from 1 to 10.

The random number is not just from 1 - 10, when we have 10 transaction then we have 1 to 10.

I mean the number created not a serial number.

Thank you.
Struggling to understand. If you create random numbers between 1 and 10, you will not get serial numbers. You may get 3, 1, 6, 9, ... etc. If you wish, you can create random numbers between 1 and 100 or 1 and 1000.
Hi CodeCruiser,

What I want is to create a number, not just a random number, what I mean random number is a number that is not easy to read, thus not easy to duplicate, for example, voucher.

In the past I've heard about a number that has checked digit. If the number after reversed has not the same checked digit, then the number is invalid number.

Thank you.
Looks good.
I am sorry, just back.

I try to convert it to VB, but failed.

 private string GetUniqueKey()
  {
  int maxSize  = 8 ;
  int minSize = 5 ;
  char[] chars = new char[62];
  string a;
  a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
  chars = a.ToCharArray();
  int size  = maxSize ;
  byte[] data = new byte[1];
  RNGCryptoServiceProvider  crypto = new RNGCryptoServiceProvider();
  crypto.GetNonZeroBytes(data) ;
  size =  maxSize ;
  data = new byte[size];
  crypto.GetNonZeroBytes(data);
  StringBuilder result = new StringBuilder(size) ;
  foreach(byte b in data )
  { result.Append(chars[__b % (chars.Length - )>); }
   <span class="code-keyword">return result.ToString();
  }

What should I do ?

Thank you.
Where did you get that code? Following does not look right

 <span class="code-keyword">return result.ToString();
That code contains html tags for some reason. Here is the converted code

private Function GetUniqueKey() As String
  Dim maxSize As Integer  = 8 
  Dim minSize As Integer= 5;
  Dim chars As new char(62)
  Dim a As string = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
  chars = a.ToCharArray()
  Dim size As Integer  = maxSize 
  Dim data As new byte(1)
  Dim crypto As new RNGCryptoServiceProvider()
  crypto.GetNonZeroBytes(data) 
  size =  maxSize 
  data = new byte(size)
  crypto.GetNonZeroBytes(data);
  Dim result As new StringBuilder(size) 
  foreach b As byte in data 
     result.Append(chars(b % (chars.Length - 1))
  Next
  return result.ToString()
  End Function

Open in new window

Hi CodeCruiser,

I've compiled error :

Error      8      Character is not valid.       
Error      7      Expression is of type 'Byte', which is not a collection type.       
Error      3      Type 'Byte' has no constructors.       
Error      5      Type 'Byte' has no constructors.       
Error      1      Type 'Char' has no constructors.
Error      4      Type 'RNGCryptoServiceProvider' is not defined.       
Error      6      Type 'StringBuilder' is not defined.       
Error      2      Value of type '1-dimensional array of Char' cannot be converted to 'Char'.       

Thank you.
Another try

Private Function RNGCharacterMask() As String
	Dim maxSize As Integer = 8
	Dim minSize As Integer = 5
	Dim chars As Char() = New Char(61) {}
	Dim a As String
	a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
	chars = a.ToCharArray()
	Dim size As Integer = maxSize
	Dim data As Byte() = New Byte(0) {}
	Dim crypto As New RNGCryptoServiceProvider()
	crypto.GetNonZeroBytes(data)
	size = maxSize
	data = New Byte(size - 1) {}
	crypto.GetNonZeroBytes(data)
	Dim result As New StringBuilder(size)
	For Each b As Byte In data
		result.Append(chars(b Mod (chars.Length - 1)))
	Next
	Return result.ToString()
End Function

Open in new window

What is  RNGCryptoServiceProvider ?

Error      1      Type 'RNGCryptoServiceProvider' is not defined.

Thank you.
ASKER CERTIFIED SOLUTION
Avatar of Nasir Razzaq
Nasir Razzaq
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Great.

Thank you very much for your help.