Marketing and fuzzy distribution
I have mentioned fuzzy logic and random distribution before but I think that it is also being applied in some marketing strategies.
A supermarket chain in our country is giving away collectibles in the form of images of football players (soccer for the Americans). For every, Oh… I don’t know, € 5 , you spend you will get 5 random pictures.
At lunch my mother, who collects them, was going over a list of friends seeing if they have a picture she doesn’t have or the other way around and she noted that certain images nobody seems to have.
If you think about it from a marketing perspective it makes a lot sense why she doesn’t have certain images. The marketing strategy is all about making you willing to pay a certain amount or attract customers because you want those pictures. Once you have them, the marketing strategy will no longer have affect on you. It is in interest of the marketing company to try and keep you as long as possible under the effect of the marketing strategy.
One way of doing it by doing an imbalanced distribution: Certain pictures will not be distributed in certain locations. That way the customer under the effect of marketing will keep buying. Of course this won’t hold in the long run, so what you do is slowly slide the distribution.
Sliding random distribution:
A distribution whose content is randomized will only distribute a small subset which moves over the entire distribution so that in the end the entire content was equally distributed, however if a moment in time was used only a small subset would have been available.
If you have trouble understanding think of it as traveling from the north pole to the south pole visiting every restaurant you can find. At every stop you will select one random soup on the menu. Each place has different flavors and as you go more and more south you will encounter different flavors. However because your are “sliding” you will often encounter the same soup.
Anyway if that wasn’t clear here is it in code:
[cc_cpp]
#include
#include
#include
#define MAX_AMOUNT 100
#define SLIDER_SIZE 5
/* Uncomment the next line to see the values in random order */
#define USE_RANDOM_ORDER
class SlidingDistribution{
int m_Values[MAX_AMOUNT];
int m_SliderBegin;
int m_SubPos;
public:
SlidingDistribution() : m_SliderBegin(0), m_SubPos(0) {
for(int i =0; i < MAX_AMOUNT; ++i)
{
m_Values[i] = i;
}
#ifdef USE_RANDOM_ORDER
std::random_shuffle(m_Values, m_Values + MAX_AMOUNT);
#endif
}
int GetRandomNumber(){
m_SubPos += 1;
if(m_SubPos % SLIDER_SIZE == 0)
{
m_SliderBegin = (m_SliderBegin + 1) % MAX_AMOUNT;
m_SubPos = 0;
}
return m_Values[(m_SliderBegin + (m_SubPos % SLIDER_SIZE))%MAX_AMOUNT];
}
};
int main(int argc, const char** argv)
{
SlidingDistribution distribution;
int amounts = 0;
do{
int alignCounter = 0;
while(amounts)
{
std::cout << std::setfill(' ') << std::setw(3) << distribution.GetRandomNumber();
alignCounter++;
if(alignCounter >= 14)
{
std::cout << "\n";
alignCounter = 0;
}else
{
std::cout << " ";
}
amounts--;
}
std::cout << "\n" << "How many values do you wish to see? (type 0 to quit)\nLoops: ";
std::cin >> amounts;
} while(amounts);
return 0;
}
[/cc_cpp]