Hello,
like you said the generated numbers are effectively more random.

*> It is common practice to initialize such a pseudo-random number generator
with a new seed at every run, typically the current time.*
*> You can do this by calling {OS.srand 0} at the beginning of your program.
 Subsequent calls to OS.rand will look more random ;-)*
Forgive my ignorance but I didn't know about this.

Thanks

2010/9/8 Raphael Collet <[email protected]>

> Dear Khadija,
>
> OS.rand actually generates *pseudo-random* numbers.  It is common practice
> to initialize such a pseudo-random number generator with a new seed at every
> run, typically the current time.
>
> You can do this by calling {OS.srand 0} at the beginning of your program.
>  Subsequent calls to OS.rand will look more random ;-)
>
> Cheers,
> Raphael
>
> On Wed, Sep 8, 2010 at 11:02 AM, Khadija EL MAHRSI <
> [email protected]> wrote:
>
>> Hello,
>> I tried both methods and they worked but I just wanted to know if the
>> values generated by OS.rand are always the same or is there something I'm
>> missing.
>> OS.rand is supposed to generate random numbers each time but no matter how
>> many times I run "main" I always get the same values. I tried recompiling
>> and ran "main" again but I got the same values. Is this normal?
>>
>> Thanks
>>
>> 2010/9/7 Wolfgang Meyer <[email protected]>
>>
>> Hi,
>>> do you want the OS function to be executed on the site where MyClass
>>> is running or locally on the original site?
>>> For OS.rand this does not really matter so much, but if you execute,
>>> for example, OS.unlink, then it is very important.
>>>
>>> If you want to execute the code locally on the original site, you
>>> could create a kind of "stationary procedure" for OS.rand. There is
>>> actually a (undocumented?) system module "Service" for  this. Your
>>> GrandParent class would look this:
>>>
>>> functor
>>> import
>>>   OS
>>>   Service
>>> export
>>>   grandParent:GrandParent
>>> define
>>>   RandService = {Service.synchronous.newFun OS.rand}
>>>
>>>   class GrandParent
>>>   feat
>>>      a
>>>      b
>>>      c
>>>      d
>>>
>>>      meth init(A)
>>>         self.a=A
>>>         self.b=78
>>>         self.d={RandService}
>>>      end
>>>      %...
>>>   end
>>> end
>>>
>>>
>>> If, on the other hand, the OS function should be executed on the
>>> remote site, where the object is living, then you need to link the
>>> functor with the class definition on the remote site such that the
>>> remote version of OS is used.You  can do this with a modified version
>>> of CreateRemoteStationaryObject:
>>> ------
>>> ...
>>> fun {CreateRemoteStationaryObject ModuleURL Feat Init RM}
>>>   ClassModule = {RM link(url:ModuleURL $)}
>>>   functor RemoteCode
>>>      export result:Result
>>>      define
>>>        Result = try {NewStat ClassModule.Feat Init}
>>>                 catch E then
>>>                    {Value.failed E}
>>>                 end
>>>      end
>>>     AppliedFunctor = {RM apply(RemoteCode $)}
>>>   in
>>>   AppliedFunctor.result
>>> end
>>>
>>> RM = {New Remote.manager init(host:localhost)}
>>>
>>> RemoteObject = {CreateRemoteStationaryObject 'MyClasses.ozf' parent
>>> init(7) RM}
>>> RemoteObject1 = {CreateRemoteStationaryObject 'MyClasses.ozf' child
>>> init(9) RM}
>>>
>>> --------
>>> Instead of a class, the function now takes the URL of a functor
>>> ('MyClasses.ozf') and the feature of the functor where the class is
>>> defined (parent or child).
>>> I have also moved the creation of the Remote.manager out of the
>>> function because otherwise a new Oz process is created for every
>>> object.
>>> To make this version of CreateRemoteStationaryObject work in a real
>>> distributed application, you have to copy the compiled modules (*.ozf
>>> files) to the remote site. As long as you only use localhost, that is
>>> not necessary.
>>>
>>> Hope this helps,
>>>  Wolfgang
>>>
>>>
>>>
>>> On Mon, Sep 6, 2010 at 10:25 AM, Khadija EL MAHRSI
>>> <[email protected]> wrote:
>>> > Hello,
>>> > using this information I wanted to do the following:
>>> > Create a stationary instance of a class (let's call it MyClass) on a
>>> remote
>>> > site (thanks to the code you've given me earlier in another topic:
>>> "Sending
>>> > classes to a remote site"). This is the instance creation code line:
>>> > T={CreateRemoteStationaryObject MyClass init()}
>>> > This class' init method uses an init method from another class
>>> (MySupClass)
>>> > from which it also inherits its features (class MyClass from
>>> MySupClass).
>>> > In this class' init method (MySupClass) I want to use OS.something
>>> (OS.rand
>>> > for example) to fill this class' features. Can I do this?
>>> >
>>> > Thanks, I really appreciate the help you're always willing to offer.
>>> >
>>> > 2010/9/5 Wolfgang Meyer <[email protected]>
>>> >>
>>> >> Hi,
>>> >>
>>> >> to use a sited module, you have to make sure that you use a local
>>> >> module instance, i.e. a version of OS that has been linked on the
>>> >> running site.
>>> >> To achieve this, code is packaged in a functor with its dependencies.
>>> >> An example:
>>> >> This code won't work because it uses a remote "OS":
>>> >>
>>> >> declare
>>> >> functor RemoteCode
>>> >> export R
>>> >> define
>>> >>   R = {OS.rand}
>>> >> end
>>> >>
>>> >> RM = {New Remote.manager init}
>>> >> AF = {RM apply(RemoteCode $)}
>>> >> {RM close}
>>> >> {Show AF.r}
>>> >>
>>> >>
>>> >> But this code will work, because it uses a locally imported "OS":
>>> >>
>>> >> declare
>>> >> functor RemoteCode
>>> >> import OS          %% This line is the only difference
>>> >> export R
>>> >> define
>>> >>   R = {OS.rand}
>>> >> end
>>> >>
>>> >> RM = {New Remote.manager init}
>>> >> AF = {RM apply(RemoteCode $)}
>>> >> {RM close}
>>> >> {Show AF.r}
>>> >>
>>> >> So you have to package the class in a functor and make sure that this
>>> >> functor is applied or linked on the remote site where the class
>>> >> instance is running.
>>> >>
>>> >> Hope this helps,
>>> >>  Wolfgang
>>> >>
>>> >>
>>> >> On Sun, Sep 5, 2010 at 12:58 PM, Khadija EL MAHRSI
>>> >> <[email protected]> wrote:
>>> >> > Hello,
>>> >> > Correct me if I'm wrong, after some research I came to the
>>> conclusion
>>> >> > that
>>> >> > since OS is sited it is not possible to achieve the idea I had so
>>> >> > instead I
>>> >> > will have the result of OS.something passed to this class as
>>> parameter
>>> >> > through a method.
>>> >> > Thanks.
>>> >> >
>>> >> > 2010/9/4 Khadija EL MAHRSI <[email protected]>
>>> >> >>
>>> >> >> Hello,
>>> >> >> I was wondering if it is possible to have a class running on a
>>> remote
>>> >> >> site
>>> >> >> execute OS.(something) and put the result in a feature of this
>>> class
>>> >> >> (like
>>> >> >> self.x=OS.rand for example).
>>> >> >> Thanks
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> _________________________________________________________________________________
>>> >> > mozart-users mailing list
>>> >> > [email protected]
>>> >> > http://www.mozart-oz.org/mailman/listinfo/mozart-users
>>> >> >
>>> >>
>>> >>
>>> _________________________________________________________________________________
>>> >> mozart-users mailing list
>>> >> [email protected]
>>> >> http://www.mozart-oz.org/mailman/listinfo/mozart-users
>>> >
>>> >
>>> >
>>> _________________________________________________________________________________
>>> > mozart-users mailing list
>>> > [email protected]
>>> > http://www.mozart-oz.org/mailman/listinfo/mozart-users
>>> >
>>>
>>> _________________________________________________________________________________
>>> mozart-users mailing list
>>> [email protected]
>>> http://www.mozart-oz.org/mailman/listinfo/mozart-users
>>>
>>
>>
>>
>> _________________________________________________________________________________
>> mozart-users mailing list
>> [email protected]
>> http://www.mozart-oz.org/mailman/listinfo/mozart-users
>>
>
>
>
> _________________________________________________________________________________
> mozart-users mailing list
> [email protected]
> http://www.mozart-oz.org/mailman/listinfo/mozart-users
>
_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to