× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hi Peter,
 
<snip>
As I don't have an iSeries at home, it has to be completely PC-based.
 
The problem I'm encountering is that I need to randomize the array with 
questions, and I have no clue as to how to start this.
</snip>
 
Remember that you have access to the WinAPI (Win32 DLL) so most things you
can do on a PC you can do using VARPG. Or you could download a Java class
that generates a random number and interface to that. You just need to
"think PC" not "AS/400" for native solutions.   
 
With that in mind, simply use the WinAPI rand() function (below is the C
prototype). So I'm sure you could simply prototype rand(), specifying
Win32.DLL, using a 10I 0 return variable:
 
 
*** start of include***
 
 
int  rand ( void ); 

Generate random number.
  Returns a pseudo-random number in the range from 0 to RAND_MAX constant.
This is generated by an algorithm that returns a series of non-related
numbers each time is called. This algorithm should be initialized to
different starting points using function srand
<http://www.cplusplus.com/ref/cstdlib/srand.html>  to generate more
realistic random numbers.
  RAND_MAX is a constant defined in stdlib.h. Its default value is
implementation defined.



Parameters. 


(none) 

Return Value.
  An integer value between 0 and RAND_MAX. 


Portability.
  Defined in ANSI-C.



Example.


/* rand example */

#include <stdio.h>

#include <stdlib.h>

#include <time.h>



int main ()

{

  /* initialize random generator */

  srand ( time(NULL) );



  /* generate some random numbers */

  printf ("A number between 0 and RAND_MAX (%d): %d\n", RAND_MAX, rand());

  printf ("A number between 0 and 99: %d\n", rand()%100);

  printf ("A number between 20 and 29: %d\n", rand()%10+20);



  return 0;

}



Output:
A number between 0 and RAND_MAX (32767): 30159
A number between 0 and 99: 72
A number between 20 and 29: 23



A good way to generate almost-true random numbers is to initialize the
random algorithm using srand() with the current time in seconds as
parameter, as obtained from time function included in <time.h>. And,
generally, a good way to get an integer random number between a range is to
perform a module (%) operation on a result provided by rand(): 


thus rand()%25 would be a random number between 0 and 24, both included. 


  

*** end of include***

The most difficult thing about using VARPG to interface with "native" DLLs
is the nesting of the header files. That is, you find an example that
<includes> some prototypes in a header file, but when you find the header
file it simply <includes> more header files, and so on until you find that
the value you should be passing to the procedure is another int. And, yes,
it's 10I 0 on the PC too. :-)

Have a look at http://www.cplusplus.com/ref/cstdlib/rand.html

Good luck.

Larry Ducie


As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.