Processing Ajax...







Are you sure you want to delete this item?


Are you sure you want to delete this item?

User Image
14 discussion posts
(finally took step of updating to new version =-- again -- as last tme didn't work, .net broken, wouldn't fix, had to reinstall OS to fix; just so ya know what it takes for users to support .net...)

you have all these bells and whistles for things I don't use...
window buttons, screen saver, login screen , window management, multiple task bars...

ALL I NEEDED was it managing random screen savers on 2 windows of different sizes...


the random part needs some work.

I'm been looking at about the same set of 3-4 random image out of a folder of 699, on 1 screen and (well don't
keep track as often on primary screen as it's covered with windows...but another 374 in the folder for it (differently sized for
larger monitor).


Now it DOES vary if I add new ones, ... but i think the random number it starts with, isn't very random nor is the sequence that follows...


Basic --- when users say the want to see the images in a random order, it doesn't mean 'choose at random', it means see
ALL the images in a random order.

That mans on each startup, start with a new random number, (make sure it's not the same random number as before).... i.e. get a source of randomness. If MS doesn't have a good one in their libs...then read the time with nanosecond accuracy, and use the time:


string (($nano)+10**9*( (<seconds-since-midnight>) + 86400*((<day-of-year>)+365.24*(<4digit year>)) ) ) 
convert that into whatever normalized form is needed for the random num generator...

create array of your files w/a usecount field{init=0}, and a globcounter of all {0} fields; (so init, globcnt=sizeof(array);
then either on each execution, recount the arrary, or keep globcnt around (should be fine, as long as nothing updates array without
updating globcnt)

then gen random number (0..globcnt-1)

my fileindex=0;
while (newrand>0 && fileindex < (<count-of-file-in-array>) ) && globarray(fileindex)){++fileindex}
if (fileindex==sizeof(globarray) ) {
  error [.. note to log or whatever, probably don't bother user unless debugging, ];
 if (alreadyfailed) {tell user very sorry, programmer is idiot, but probably ms's fault}
 else {
alreadyfailed=1; goto &self;}



reinit the array only when you detect the array has changed...(not just reapplying settings)...

though if reapplyint settings you reread dir, then check if new files = old files , if yes, don't reset, if no (got new files, then reset random list)...

Compareed to all the other stuff you have in there, the above is trivial (once you've done it, like everythign else)...

the above ws off the top of my head, in pseudo C-perl, so if you need clarification feel free to
call an idiot and ask for more info..(or something like that)...

but please fix !!!

Nov 16, 2011 (modified Nov 16, 2011)  • #1
Keith Lammers (BFS)'s profile on
I apologize for the frustration. We have received feedback from other customers as well about the random wallpaper selection, so we're definitely aware of it. The good news is that we're planning to have it fixed up for the version after 3.4.1 (hopefully within a few months). I'll be sure to post an update as soon as a beta version is available with updated wallpaper randomization code.

Nov 16, 2011  • #2
Keith Lammers (BFS)'s profile on
Just wanted to follow-up and let you know that in DisplayFusion 3.4.1 Beta 5, the wallpaper randomization is much better. No image will be shown twice until all of the images have been shown.

You can download the latest beta version here:

Nov 28, 2011  • #3
User Image
14 discussion posts
Just wanted to follow-up and let you know that in DisplayFusion 3.4.1 Beta 5, the wallpaper randomization is much better. No image will be shown twice until all of the images have been shown.

You can download the latest beta version here:


A potentially large improvement! provided it doesn't start at the same place each time...(with 1000 pics and 10 minutes/change, would take almost a week to show all. If you reboot often, and it starts at the same place each time...well, you get the point).

SUGGESTION!!! *bounce* *bounce*...

I don't know about standards, (or if there are any), but many programs have *some* sort of rating system (usually dreadfully inadequate 5 point scale; I prefer at least 0-100, though +/- 100 really can say alot! especially when you have a large collection...

but 5 point??? describe preferences of 1000's of pics(or songs or whatever)... unbelievable...(but uses would be confused by
too many numbers, (then they can round to nearest 10 (or 20)...whatever...

But a different 'mode' of operation (Ideally there could be more than one -- where a good source of randomness is used.
Trouble I see in some reading (while doing research for this reply... (a common occurrence w/me)) as the 'modulus' problem.

Depending on the random generator used and it's internal moduli or algorithm, when you reduce the random
number (usually with a 'modulus function), to your setsize, it may be such that a given set size will line up with the generators
modulus. In the case of a good and large generator modulus (maybe easier? on 64-bit machines?) that may be less likely (dunno).
but .. if it lines up a certain way, it can cause 'short' periods were all elements dn't get shown!...(w/out explicit shuffle algorithms
that keep track of items shown...) (ref:–Yates_shuffle#The_modern_algorithm ),
and lower in page the modulus problem.

What I found fascinating was that in order to ensure equal possibility of all permutations of 52 random playing cards, 226 bits (hey, 4, 64-bit Qwords would work just fine!).)

But randomness aside... display modes...

a possibility -- simple is to use the value of the rating (assuming 0 based, ), as it's
number of times it is added to the list of items to be shuffled, thus an item will come up 'n'=rating' during a complete run-through.

But... and this is ESPECIALLY true with low-range rating systems (1...5), ..

does that mean your best and finest will be shown 5 times or 66% more often than mediocre? or only 500% more than 'bad'?

Is that wanted?

When I wrote something similar (perlscript ages ago, circa 'perl4 the early 90's)...
I put in the the option for both a few fixed and and variable run-time exponent to attach to the rating.

So say '2', now your faves or 25/9 or over 2.5 times as likely and 25:1 for faves over sucks!...(I hate it hat I have to waste a star for 'sucks'....but otherwise it's left as 'unrated' *sigh*

But you want extreme? throw in an exp of 5 or 7 ... (at the time, an exp of 10 would have overflows 32-bits even with only a 5 scale (and I was using a 100 pt scale!...).. Maybe value ~2.5 is (depends on scale) which is why I made it run-time changeable.

There are other modes...

like of the priorities (if 1-5, say), can assign numbers to each group. Those numbers are then used as the weighted values in the random selection process, so .. rather than formulaically doing the above , could assign 25 pts for 5, 16 for 4, 9 for 3...etc, and it would normalize them to 100% .. Certainly a flexible approach, allowing as little or as much separation as use wanted.

If it was a 0-100 scale, I'd all user to define their own 'brackets'... like 0pt (don't display), 1-7: 1pt, 8-15:5 ... 95-100: 50...etc..

Thanks for the update...will give it a try...(had to resintall windows, BTW to get my copy working again (.Net was very messed up), unrelated to this prod, other than this prod needs it to run...hmmm....)..

Hope my comments useful and not taken in any negative light...(would be sad as easier not to write it than write it and also have it be a negative! ;-)...


Nov 28, 2011  • #4
Keith Lammers (BFS)'s profile on
No worries :)

The wallpaper rotation is now completely random, and will never reuse an image until the entire list of images has been shown, including after restarting DisplayFusion or Windows :)
Nov 29, 2011  • #5
Subscribe to this discussion topic using RSS
Was this helpful?  Login to Vote(-)  Login to Vote(-)