• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Liutauras Vilda
  • Campbell Ritchie
  • Tim Cooke
  • Bear Bibeault
  • Devaka Cooray
Sheriffs:
  • Jeanne Boyarsky
  • Knute Snortum
  • Junilu Lacar
Saloon Keepers:
  • Tim Moores
  • Ganesh Patekar
  • Stephan van Hulst
  • Pete Letkeman
  • Carey Brown
Bartenders:
  • Tim Holloway
  • Ron McLeod
  • Vijitha Kumara

approach value to 1  RSS feed

 
Ranch Hand
Posts: 45
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have a variable that represents a double value in the range between 0 and 1. This variable should increase (i.e. come closer to 1) everytime a certain event occurs (say, a user clicks).

How (mathematically) would I calculate the variable, so that it comes closer to 1 everytime the event happens? This is probably pretty easy, but I'm lost here...

The problem I have is that I don't have the overall number of events (n) that already occured, but only the current value (v) of the variable. Otherwise I could calculate v = 1-1*n.

Thanks for your hints!
 
author
Sheriff
Posts: 23586
138
C++ Chrome Eclipse IDE Firefox Browser Java jQuery Linux VI Editor Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

How (mathematically) would I calculate the variable, so that it comes closer to 1 everytime the event happens? This is probably pretty easy, but I'm lost here...



This is a weird requirement. You need to get closer to one, but you don't care how you approach it?

How about...

new_value = prev_value + ((1 - prev_value) / 1000);

Of course, the precision of a double isn't infinite. And it will eventually become one.

Henry
 
author and iconoclast
Sheriff
Posts: 24220
40
Chrome Eclipse IDE Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Well, you could add half the remaining interval every time an event occurs:

x += (1 - x)/2.0

 
Greenhorn
Posts: 19
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Lukas Benberg wrote:
The problem I have is that I don't have the overall number of events (n) that already occured, but only the current value (v) of the variable. Otherwise I could calculate v = 1-1*n.



I don't think that'd return a value between 0 and 1..... What use would (1-n) be?
I mean, n being an integer....


 
Lukas Benberg
Ranch Hand
Posts: 45
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thank you all,
I think this is what I had in my mind: x += (1 - x)/2.0 .

Henry, for the moment I don't care _how_ I approach 1. Later, this may become relevant. I will have to think about your hint.

Prabz, you are right, what I actually meant was: v = 1-1/n

 
lowercase baba
Bartender
Posts: 12627
50
Chrome Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
i think however you do it, you will have a limit to how many clicks they can make. at some point, you will hit the limit on the precision of a float/long, and you're done.

can you perhaps better explain the larger problem? Maybe there is a better solution...
 
Lukas Benberg
Ranch Hand
Posts: 45
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Fred,
the context is: I want to calculate something like the user's "preferences" for "items" from data I have. for further analysis, all preference values have to be between 0 and 1 (or alternatively between -1 and 1). I don't know in advance the final "preference" value, because preferences may increase later. also, the number of "items" may change later.

 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!